Giter Club home page Giter Club logo

taiga-back's People

Contributors

alexhermida avatar astagi avatar bameda avatar carlosgoce avatar carloslvar avatar daniel-herrero avatar diacritica avatar eaposner avatar farooqaaa avatar hecfernandez avatar hirunatan avatar jespino avatar juanfran avatar julienpalard avatar luyikei avatar migonzalvar avatar niwinz avatar qwertyllo avatar rezaalmanda avatar rsanchezbalo avatar samuelmarks avatar santossi avatar stadia avatar superalex avatar tdelatorre avatar theriverman avatar weblate avatar xaviju avatar yamila-moreno avatar zhaoyuxuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

taiga-back's Issues

[Q] What is the best way to get helpful logs to debug configuration?

I've started to install taiga with taiga-docker.
When I have some configuration mistake, taiga-back often returns 500, but the container does not show any informational log.
For example, If I try password recovery when the email settings are incomplete, I got only logs like below:

Mar 15 04:17:42 ip-172-20-4-178 docker-compose[13858]: taiga-gateway_1          | 172.20.0.76 - - [14/Mar/2022:19:17:42 +0000] "POST /api/v1/users/password_recovery HTTP/1.1" 500 141 "http://taiga-01.sys.ai-partners.jp:9000/forgot-password" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36" "-"

Cloud you tell me what is the best way to get more helpful logs for debugging configurations?

[BUG] Deleted user can be re-identified

When a user is deleted, JSON objects in the history_historyentry table persist and allow for re-identification.

Steps to reproduce

  • Create a new user in the Django admin interface.
  • Log in as the new user.
  • Create a new SCRUM project.
  • Delete the user account (from their own account settings).
  • Check the database tables users_user and history_historyentry.

Details

As all user data should be deleted when a user decides to remove their account, I would have assumed that there is no trace left that can link the user and any other data stored in the database. However, this is not the case. The approach seems to be to generate a ghost user, i.­e., all sensitive attributes in the users table are replaced (e.­g., the name becomes Deleted user):

taiga=# SELECT * FROM users_user;
 id |                                    password                                    |          last_login           | is_superuser |                  username                  |                        email                        | is_active |  full_name   |  color  | bio |                                       photo                                         |          date_joined          | lang | timezone | colorize_tags | token | email_token |              new_email              | is_system | theme | max_private_projects | max_public_projects | max_memberships_private_projects | max_memberships_public_projects |               uuid               | accepted_terms | read_new_terms | verified_email | is_staff |        date_cancelled         
----+--------------------------------------------------------------------------------+-------------------------------+--------------+--------------------------------------------+-----------------------------------------------------+-----------+--------------+---------+-----+------------------------------------------------------------------------------------+-------------------------------+------+----------+---------------+-------+-------------+-------------------------------------+-----------+-------+----------------------+---------------------+----------------------------------+---------------------------------+----------------------------------+----------------+----------------+----------------+----------+-------------------------------
  8 | !43rymrEmEQFW6ugLlryibTjT0uVHqS3zGc5dfKKb                                      | 2022-05-24 18:41:43.213797+00 | f            | deleted-user-1653418385801                 | [email protected]                 | f         | Deleted user |         |     |                                                                                    | 2022-05-24 18:41:26.270247+00 |      |          | t             |       |             | [email protected] | f         |       |      |                     |                                  |                                 | 95df1e58c1d14e349bef75028a070e88 | t              | f              | t              | f        | 2022-05-24 18:53:05.802388+00

With the help of the JSON entries in the history_historyentry table, this information can be restored, though. For instance, the user column contains the user name and their ID for each event in the history: {"pk": 8, "name": "user"} (obtained by SELECT * FROM history_historyentry;). With the help of this information, one can easily guess that the 'Deleted user' from the other table is indeed called 'user'. Moreover, user details in the history are preserved and not anonymized, which might be in conflict with GDPR requirements.

Environment

I am using taiga-docker on branch stable (last commit: bd87d40f3c22def83ea6a502d3f16797c2933b2e). No errors were found in the container logs or the developer console.

  • OS: Ubuntu 20.04.4 LTS
  • Browser: Firefox 100.0.2 (64 bit)

[FR] multiple wiki modules in one project - or folder for bookmarks

Please describe the problem / need you are trying to solve.
Especially the tracking system in your wiki is amazing!
However if you want to use the wiki for different overarching topics in the same Project, the organisation of links and pages can be somewhat confusing, if not impossible.
For example if we were to protocol our meeting using the wiki (which we really want to), the bookmark tap would become unusable

Describe the feature or the improvement you'd like and what are you trying to achieve.
Either give the possibility to add a second wiki module into the same project or allow to create folders in the wiki bookmark structure.

Describe alternatives you've considered
we are using a separate project to have a wiki for meetings right now. however this poses the problem, that I can not search through all wikis at once.

[BUG] Test github

Describe the bug

How can we reproduce the behavior

Workarounds

Screenshots

Taiga environment

Desktop (please complete the following information):

  • OS:
  • Browser:
  • Version:

Additional context

[Q] Taiga not starting after enabling Importer

Hi

After enabling importer

IMPORTERS["jira"] = {
"active": True, # Enable or disable the importer
"consumer_key": "proporjectstaiga",
"cert": open('private_key.pem').read(),
"pub_cert": open('public_key.pem').read(),
}

taiga not starting, private_key.pem and public_key.pem both are in the ~/taiga-back/settings/ folder with taiga ownership

taiga@vmi621932:/taiga-back$ sudo systemctl stop taiga
taiga@vmi621932:
/taiga-back$ sudo systemctl start taiga
taiga@vmi621932:~/taiga-back$ sudo systemctl status taiga
● taiga.service - taiga_back
Loaded: loaded (/etc/systemd/system/taiga.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2021-07-08 10:34:02 CEST; 1s ago
Process: 138392 ExecStart=/home/taiga/taiga-back/.venv/bin/gunicorn --workers 4 --timeout 60 --log-level=info --access-logfile - --bind 0.0.0.0:8001 taiga.wsgi (code=exited, status=3)
Main PID: 138392 (code=exited, status=3)

[FR] Convert Task in User Story or vice versa

It is often the case that tasks grow over time and consequently it makes sense to turn them into a user story. -> Necessary feature: Convert Task into User Story

On the other hand, it is often the case that a user story emerges as a task of another user story. -> Necessary Feature: Convert User Story into Task

Imported JIRA substasks duplicated as both tasks and user stories

Describe the bug

I managed to import my tasks from JIRA today. What I observed afterwards is that each JIRA subtask was imported twice: once as a genuine task belonging to a parent User Story (an equivalent of JIRA's "Story"), and also separately as a User Story of its own.

How can we reproduce the behavior
Import a JIRA Story that contains subtasks. Notice that each subtask is created twice: once correctly as User Story's Task and also as an independent User Story.

Screenshots
Screen Shot 2022-01-13 at 10 19 18 PM

Taiga environment
Self-hoted stable docker container.

[Q] Am I building the docker image of this repository incorrectly?

I cloned this repository and built the Docker image from the root of the repository with docker build --tag yuppers/taiga-back -f docker/Dockerfile .

While in the container created with the image yuppers/taiga-back, output from running /taiga-back/docker/async_entrypoint.sh

Give permission to taiga:taiga
Starting Celery...
Traceback (most recent call last):
  File "/opt/venv/bin/celery", line 8, in <module>
    sys.exit(main())
  File "/opt/venv/lib/python3.7/site-packages/celery/__main__.py", line 14, in main
    from celery.bin.celery import main as _main
  File "/opt/venv/lib/python3.7/site-packages/celery/bin/celery.py", line 11, in <module>
    from pkg_resources import iter_entry_points
  File "/opt/venv/lib/python3.7/site-packages/pkg_resources/__init__.py", line 32, in <module>
    import plistlib
  File "/usr/local/lib/python3.7/plistlib.py", line 65, in <module>
    from xml.parsers.expat import ParserCreate
  File "/usr/local/lib/python3.7/xml/parsers/expat.py", line 4, in <module>
    from pyexpat import *
ImportError: libexpat.so.1: cannot open shared object file: No such file or directory

I compared the Dockerfile from the repository used to build the image yuppers/taiga-back with the image layers of taigaio/taiga-back:latest published 4 months ago to the docker hub and there were no significant differences.

Given that I didn't make a mistake while building, would it make sense to add apt install libexpat1-dev? I did apt install libexpat1-dev and it seems to fix the error.

I want to note that the command /taiga-back/docker/async_entrypoint.sh does work in containers from the image taigaio/taiga-back:latest

Somewhat unrelated, but something I also want to note that this page suggests that "pyexpat module is not secure against maliciously constructed data."

[Q] taiga-async shuts down without any error

I am trying to run taiga on a docker swarm host behind traefik. Here are the contents of my stack file sanitized:

version: '3.9'

# Adapted from https://github.com/kaleidos-ventures/taiga-docker/blob/main/docker-compose.yml

x-environment:
  &default-back-environment
  # Database settings
  POSTGRES_DB: "taiga"
  POSTGRES_USER: "taiga"
  POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
  POSTGRES_HOST: "taiga-db"
  # Taiga settings
  TAIGA_SECRET_KEY: "${TAIGA_SECRET}"
  TAIGA_SITES_SCHEME: "https"
  TAIGA_SITES_DOMAIN: "taiga.mydomain.tld"
  TAIGA_SUBPATH: ""
  RABBITMQ_USER: "taiga"
  RABBITMQ_PASS: "${RABBIT_PASSWORD}"
  # Telemetry settings
  ENABLE_TELEMETRY: "False"

x-volumes:
  &default-back-volumes
  - taiga-static-data:/taiga-back/static
  - taiga-media-data:/taiga-back/media

services:
  taiga-db:
    image: postgres:12.3
    environment:
      POSTGRES_DB: taiga
      POSTGRES_USER: taiga
      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
    volumes:
      - taiga-db-data:/var/lib/postgresql/data

  taiga-back:
    image: taigaio/taiga-back:${VERSION}
    environment:
        <<: *default-back-environment
        ENABLE_GITLAB_AUTH: "True"
        GITLAB_API_CLIENT_ID: "${GITLAB_APP_ID}"
        GITLAB_API_CLIENT_SECRET: "${GITLAB_SECRET}"
        GITLAB_URL: "https://git.mydomain.tld"
        PUBLIC_REGISTER_ENABLED: "True"
    volumes: *default-back-volumes

  taiga-async:
    image: taigaio/taiga-back:${VERSION}
    entrypoint: ["/taiga-back/docker/async_entrypoint.sh"]
    environment: 
      <<: *default-back-environment
    volumes: *default-back-volumes

  taiga-async-rabbitmq:
    image: rabbitmq:3.8-management-alpine
    environment:
      RABBITMQ_ERLANG_COOKIE: secret-erlang-cookie
      RABBITMQ_DEFAULT_USER: taiga
      RABBITMQ_DEFAULT_PASS: ${RABBIT_PASSWORD}"
      RABBITMQ_DEFAULT_VHOST: taiga
    volumes:
      - taiga-async-rabbitmq-data:/var/lib/rabbitmq

  taiga-front:
    image: taigaio/taiga-front:${VERSION}
    environment:
      TAIGA_URL: "https://taiga.mydomain.tld"
      TAIGA_WEBSOCKETS_URL: "wss://taiga.mydomain.tld"
      TAIGA_SUBPATH: ""
      ENABLE_GITLAB_AUTH: "true"
      GITLAB_API_CLIENT_ID: "${GITLAB_APP_ID}"
      GITLAB_URL: "https://git.mydomain.tld"
      PUBLIC_REGISTER_ENABLED: "true"

  taiga-events:
    image: taigaio/taiga-events:${VERSION}
    environment:
      RABBITMQ_USER: taiga
      RABBITMQ_PASS: "${RABBIT_PASSWORD}"
      TAIGA_SECRET_KEY: "${TAIGA_SECRET}"

  taiga-events-rabbitmq:
    image: rabbitmq:3.8-management-alpine
    environment:
      RABBITMQ_ERLANG_COOKIE: secret-erlang-cookie
      RABBITMQ_DEFAULT_USER: taiga
      RABBITMQ_DEFAULT_PASS: "${RABBIT_PASSWORD}"
      RABBITMQ_DEFAULT_VHOST: taiga
    volumes:
      - taiga-events-rabbitmq-data:/var/lib/rabbitmq

  taiga-protected:
    image: taigaio/taiga-protected:${VERSION}
    environment:
      MAX_AGE: 360
      SECRET_KEY: "${TAIGA_SECRET}"

  taiga-gateway:
    image: taiga-nginx:1.19-alpine
    deploy:
      labels:
        - "traefik.enable=true"
        - "traefik.docker.network=webgateway"
        - "traefik.http.routers.$CI_PROJECT_NAME$BRANCH_LABEL.rule=Host(`taiga.mydomain.tld`)"
        - "traefik.http.routers.$CI_PROJECT_NAME$BRANCH_LABEL.entrypoints=websecure"
        - "traefik.http.routers.$CI_PROJECT_NAME$BRANCH_LABEL.tls=true"
        - "traefik.http.routers.$CI_PROJECT_NAME$BRANCH_LABEL.tls.certresolver=le"
        - "traefik.http.routers.$CI_PROJECT_NAME$BRANCH_LABEL.service=$CI_PROJECT_NAME$BRANCH_LABEL"
        - "traefik.http.services.$CI_PROJECT_NAME$BRANCH_LABEL.loadbalancer.server.port=80"
        - "traefik.http.services.$CI_PROJECT_NAME$BRANCH_LABEL.loadbalancer.server.scheme=http"
    volumes:
      - taiga-static-data:/taiga/static
      - taiga-media-data:/taiga/media
    networks:
      default:
      webgateway:

networks:
  webgateway:
    external: true

volumes:
  taiga-static-data:
  taiga-media-data:
  taiga-db-data:
  taiga-async-rabbitmq-data:
  taiga-events-rabbitmq-data:

The taiga-async service keeps restarting, non-zero exit:

[connor@bigdell ~]$ docker stack ps devtools-taiga
ID             NAME                                     IMAGE                            NODE      DESIRED STATE   CURRENT STATE           ERROR                       PORTS
w8khtis2gm1b   devtools-taiga_taiga-async-rabbitmq.1    rabbitmq:3.8-management-alpine   bigdell   Running         Running 4 minutes ago
mcyotg9pvunl   devtools-taiga_taiga-async.1             taigaio/taiga-back:6.4.0         bigdell   Running         Running 1 second ago
pnau5og8fab1    \_ devtools-taiga_taiga-async.1         taigaio/taiga-back:6.4.0         bigdell   Shutdown        Failed 7 seconds ago    "task: non-zero exit (1)"
azu6bl4eqm2o    \_ devtools-taiga_taiga-async.1         taigaio/taiga-back:6.4.0         bigdell   Shutdown        Failed 19 seconds ago   "task: non-zero exit (1)"
ly7r2x3c65qn    \_ devtools-taiga_taiga-async.1         taigaio/taiga-back:6.4.0         bigdell   Shutdown        Failed 31 seconds ago   "task: non-zero exit (1)"
wlui3m2hh2e3    \_ devtools-taiga_taiga-async.1         taigaio/taiga-back:6.4.0         bigdell   Shutdown        Failed 43 seconds ago   "task: non-zero exit (1)"
swwo0y8nwfiw   devtools-taiga_taiga-back.1              taigaio/taiga-back:6.4.0         bigdell   Running         Running 4 minutes ago
yg6lha8qif6r   devtools-taiga_taiga-db.1                postgres:12.3                    bigdell   Running         Running 4 minutes ago
to9pjiwoikwg   devtools-taiga_taiga-events-rabbitmq.1   rabbitmq:3.8-management-alpine   bigdell   Running         Running 4 minutes ago
jbc5pbytstx7   devtools-taiga_taiga-events.1            taigaio/taiga-events:6.4.0       bigdell   Running         Running 4 minutes ago
sy1qjd3b57ml   devtools-taiga_taiga-front.1             taigaio/taiga-front:6.4.0        bigdell   Running         Running 4 minutes ago
dkh21ros1lsx   devtools-taiga_taiga-gateway.1           taiga-nginx:1.19-alpine          bigdell   Running         Running 4 minutes ago
wf3qlb50w8kr    \_ devtools-taiga_taiga-gateway.1       taiga-nginx:1.19-alpine          bigdell   Shutdown        Failed 4 minutes ago    "task: non-zero exit (1)"
uwquy9crzy63   devtools-taiga_taiga-protected.1         taigaio/taiga-protected:6.4.0    bigdell   Running         Running 4 minutes ago

There's no error message, or anything helpful in DEBUG:

devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | Give permission to taiga:taiga
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | Starting Celery...
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |  -------------- celery@9f3cdc50dde7 v4.3.0 (rhubarb)
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | ---- **** -----
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | --- * ***  * -- Linux-3.10.0-1160.36.2.el7.x86_64-x86_64-with-debian-10.9 2022-01-21 22:35:03
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | -- * - **** ---
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | - ** ---------- [config]
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | - ** ---------- .> app:         taiga:0x7f0558c0f250
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | - ** ---------- .> transport:   amqp://taiga:**@taiga-async-rabbitmq:5672/taiga
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | - ** ---------- .> results:     disabled://
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | - *** --- * --- .> concurrency: 4 (prefork)
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | -- ******* ---- .> task events: ON
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | --- ***** -----
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |  -------------- [queues]
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |                 .> tasks            exchange=tasks(topic) key=task.default
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | [tasks]
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.accumulate
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.backend_cleanup
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.chain
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.chord
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.chord_unlock
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.chunks
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.group
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.map
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . celery.starmap
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . djmail.tasks.retry_send_messages
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . djmail.tasks.send_messages
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.auth.token_denylist.tasks.flush_expired_tokens
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.export_import.tasks.delete_project_dump
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.export_import.tasks.dump_project
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.export_import.tasks.load_project_dump
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.contact.services.send_contact_email
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.notifications.tasks.send_bulk_email
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.services.projects.delete_project
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.services.projects.delete_projects
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.userstories.services._async_tasks_after_backlog_or_sprint_order_change
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.projects.userstories.services._async_tasks_after_kanban_order_change
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.telemetry.tasks.send_telemetry
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.timeline.service.push_to_timelines
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.webhooks.tasks.change_webhook
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.webhooks.tasks.create_webhook
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.webhooks.tasks.delete_webhook
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.webhooks.tasks.resend_webhook
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |   . taiga.webhooks.tasks.test_webhook
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    |
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | [2022-01-21 22:35:04,666: INFO/MainProcess] beat: Shutting down...
devtools-taiga_taiga-async.1.k6ay984zgzfq@bigdell    | [2022-01-21 22:35:04,667: DEBUG/MainProcess] removing tasks from inqueue until task handler finished

These lines just repeat when following the logs via docker service logs

Here are the environment variables from the spawned container:

PATH=/opt/venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=4dc53944b7f3
ENABLE_TELEMETRY=False
POSTGRES_DB=taiga
POSTGRES_HOST=taiga-db
POSTGRES_PASSWORD=-private-
POSTGRES_USER=taiga
RABBITMQ_PASS=-private-
RABBITMQ_USER=taiga
TAIGA_SECRET_KEY=-private-
TAIGA_SITES_DOMAIN=taiga.mydomain.tld
TAIGA_SITES_SCHEME=https
TAIGA_SUBPATH=
LANG=C.UTF-8
GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
PYTHON_VERSION=3.7.10
PYTHON_PIP_VERSION=21.0.1
PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/29f37dbe6b3842ccd52d61816a3044173962ebeb/public/get-pip.py
PYTHON_GET_PIP_SHA256=e03eb8a33d3b441ff484c56a436ff10680479d4bd14e59268e67977ed40904de
DEBIAN_FRONTEND=noninteractive
PYTHONUNBUFFERED=1
PYTHONDONTWRITEBYTECODE=1
PYTHONFAULTHANDLER=1
GOSU_VERSION=1.12
DJANGO_SETTINGS_MODULE=settings.config
HOME=/root

Note that I am using gitlab to deploy this to my swarm, and to work around deploying via a gitlab runner, I build nginx to copy the config to the image. I'm using version 6.4.0.

[FR] Project Custom Field

Hi all

thanks for this project

problem / need / proposal.
Be able to define custom attributes for project

Feature description.
Be able to define custom attributes for project which should be shown in all-project-preview

I don't know all structure but just to make me understand I think something like this

taiga/projects/custom_attributes/models.py

class ProjectCustomAttribute(AbstractCustomAttribute):
    class Meta(AbstractCustomAttribute.Meta):
        verbose_name = "project custom attribute"
        verbose_name_plural = "project custom attributes"

class ProjectCustomAttributesValues(AbstractCustomAttributesValues):
    task = models.OneToOneField(
        "project.Project",
        null=False,
        blank=False,
        related_name="custom_attributes_values",
        verbose_name=_("project"),
        on_delete=models.CASCADE,
    )
    class Meta(AbstractCustomAttributesValues.Meta):
        verbose_name = "project custom attributes values"
        verbose_name_plural = "project custom attributes values"
        index_together = [("project",)]

    @property
    def project(self):
        # NOTE: This property simplifies checking permissions
        return self.project


and
taiga/projects/models.py

class ProjectTemplate(TaggedMixin, TagsColorsMixin, models.Model):
...
     project_custom_attributes = JSONField(null=True, blank=True, verbose_name=_("project custom attributes"))
...
        self.project_custom_attributes = []
        for ca in project.projectcustomattributes.all():
            self.project_custom_attributes.append({
                "name": ca.name,
                "description": ca.description,
                "type": ca.type,
                "order": ca.order
            })
...

and all other mod required

[FR] I want to add new user stories to the top instead of the bottom

Please describe the problem / need you are trying to solve.

Currently as the first thing of class UserStory there's

NEW_BACKLOG_ORDER = timestamp_mics

For our organisation we always want to add new tickets at or near the top, so I changed that locally to be 0.

Describe the feature or the improvement you'd like and what are you trying to achieve.

Probably the current behaviour of adding stuff to the bottom is preferred by some, so it should be configurable, I guess per project.

Describe alternatives you've considered

Current functionality is hardcoded in the opposite way from what I want so changing code is needed to change the functionality.

[Q] Importing a project dump into a new taiga instance loses users

I'm spinning off part of a dedicated Taiga server to another server transferring only some of the projects. The old taiga instance is set up from GIT repositories, the new one with containers. Technically both should be the same as the container was set up days ago and the repository one was upgraded at the same time as per instructions. Both seem to function perfectly.

I export my desired project at the old instance.
I import the project at the new instance

I immediately notice the the project at the new instance has issues with users: some have empty names, some are just not there.
The sprints "lose" the user stories assigned to the missing people.

I then make an export from the new project.

I compare export from old server and the new server: they are exactly the same except for lost user information.

examples:

"memberships": [
  {"user": null, ... (the rest of the fields remain as they were on the old server)
...
]
"user_stories": [
  {
    history: [
      "user": [null, "Missing User"],
      ...
    ],
    "owner": "changed to the project owner"
      ...
    }
  }
]

I expect this is because the users are not in the database at the time of import. I looked all over the place for documentation on how to handle this, but I can find none. Nor any issues.

Have I identified the problem sufficiently? What would be the best way to migrate users between the server instances then? Preferably such that they wouldn't have to re-register.

[BUG] Bulk update backlog order return Status code 400 {"bulk_stories": ["This field is required."]}

When I drag a User Story from my backlog to a sprint, the api returns me a status code 400 with the following response : {"bulk_stories": ["This field is required."]}.
To workaround this, I have to check the User Story and press on "Move to Current Sprint".

To reproduce this error :

  1. Create a Scrum
  2. Create a sprint inside it
  3. Create a User Story in the backlog
  4. Drag the User Story in the box "Drop here Stories from your backlog to start a new sprint"

I can still work but it slow me down a lot, I have to check the User Story and press on "Move to Current Sprint".

bug

I use Taiga self hosted. I am on the stable version 6.2.1 for the back an the front.

Desktop (please complete the following information):

  • OS: Windows
  • Browser: All
  • Version: Taiga version 6.2.1

[Q] Discord Webhooks

I would like to send webhooks to a discord channel, can anyone help me configuring it, I am not able to set up actually, If anyone has set it up successfully kindly help me, Thank you.
Screenshot_2021-12-03_13-19-02

I tried to add https://discord.com/api/webhooks/ in Payload url and the remaining part in the service secret key, but it seem to not working.

[BUG] Can't create a project template while using admin account

Describe the bug
Failed to create Project template, because we can't get ADMIN_AUTH_TOKEN, while we are authenticated as admin.
Also, there is nothing in the documentation that refers to how to get the ADMIN_AUTH_TOKEN.

How can we reproduce the behavior

  • Try to create a project template with an admin account.

[BUG]

Describe the bug

"*.taiga.io" certificate is expired.

How can we reproduce the behavior

https://api.taiga.io/api/v1/projects -> Use any of the API links

Screen Shot 2022-04-13 at 8 52 25 PM

Workarounds
None

Screenshots
Screen Shot 2022-04-13 at 8 52 25 PM

Taiga environment

Desktop (please complete the following information):

  • OS: IOS, Windows
  • Browser: All browswers
  • Version:

Additional context

[Q] Taiga-back API not responding but requests are going through when refreshed

Hello!

We are coming from the migration to Taiga v5 to v6 guide.
This is the 3rd day that we are attempting to fix the problem and seems like we are going nowhere. 😅

Everything is running as we expected it to:

  • The /api/v1/ is responding.
  • Events are triggering
  • Frontend good
  • Backend good, no terminal crashes

However, if we POST, PATCH, or DELETE something. The API does not respond.
Yet, if we refresh, the event is actually recorded.

4pmrXTqJLG.mp4

When this happens, we receive this log from systemctl.

 gunicorn[24075]: [2021-06-29 23:50:07 +0800] [24075] [CRITICAL] WORKER TIMEOUT (pid:18996)

Any ideas as to what could be causing this? Please nudge us in the right direction. 😅
Thank you!

[BUG] Taiga database could not be upgraded to Postgresql 14

Describe the bug
Taiga database could not be upgraded to PostgreSQL v14

How can we reproduce the behavior
Upgrade an existing Taiga database.

Detailed steps to reproduce the behavior.
When I run the pg_upgrade, it stopped at taiga database:

pg_restore: creating AGGREGATE "public.array_agg_mult("anyarray")"
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 1096; 1255 23138 AGGREGATE array_agg_mult("anyarray") taiga
pg_restore: error: could not execute query: ERROR:  function array_cat(anyarray, anyarray) does not exist
Command was: CREATE AGGREGATE "public"."array_agg_mult"("anyarray") (
    SFUNC = "array_cat",
    STYPE = "anyarray",
    INITCOND = '{}'
);

Seems to related to this problem:
https://www.postgresql.org/message-id/20210520232922.GG3676%40telsasoft.com

Taiga environment
Self hosting Taiga version 6 (2021-May) on Linux

Workaround
I put the Taiga database in another PostgreSQL 13 instance and then it is fine.

[BUG] Double quotes in commit message break comment formatting

Describe the bug
If there are double quotes in commit message - comment formatting in Taiga is broken.

How can we reproduce the behavior
Just make commit with message like 'Fixed "develop" deploy' in some test repo integrated with Taiga.

Workarounds
Some kind of double quotes escaping.

Screenshots
Attached Screenshot_20211102_102535

Taiga environment
Local up-to-date Taiga setup (v. 6.0.9).

Desktop (please complete the following information):
Does not matter.

Additional context
None.

[BUG] German Django admin interface is not displaying correctly

Describe the bug

German Django admin interface is not displaying correctly (see the screenshot below).

How can we reproduce the behavior

Workarounds

Screenshots

New Picture
Taiga environment

Self-hosted Docker installation

Desktop (please complete the following information):

  • OS:
    Windows
  • Browser:
    Firefox, Edge
  • Version:

Additional context

[BUG] unable to import Trello projects from Taiga6.

Describe the bug
I am unable to import Trello projects from Taiga6.
It probably relates to taiga-back only.

How can we reproduce the behavior
What I have done is to

Install Taiga from the "Install Taiga in Production" page
https://docs.taiga.io/setup-production.html
on a fresh Ubuntu 20.04 LTS Virtual Machine running in Windows 10 HyperV.

I can bring Taiga up and down, and everything seems to be working like
a charm (after fixing docker-compose.yml/taiga-events with restart:
always ... my events container is always struggling during startup).

I have added the Trello importer to docker-compose.yml and the Icon
shows up under "Import Project".
I have received an API key from the Trello board and a secret Trello
key from the admin on the trello project. They are added to taiga-back
as explained in "Install Taiga in Production".
TRELLO_IMPORTER_API_KEY: "12abe54553298739cdfe394497712ef3"
TRELLO_IMPORTER_SECRET_KEY: "32b2a7cdefd1d5ffacdcea6473e253a8417b365872990aecddee4222feea65f2"

ENABLE_TRELLO_IMPORTER: "true" is set in taiga-back and taiga-front
(keys changed for publication)

I can confirm my (key,token) pair against Trello using this command:
curl 'https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}'
[
Used these guides :
https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/
https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/
]
and confirmed that changing the token gives invalid token.
(I consider this a confirmation of the Trello token signature.)

When I press the Trello importer icon I get the error below:

Error message from Crome Console
elements.js:1 GET http://xxx.xxx.xxx.xxx:9000/api/v1/importers/trello/auth_url 500 (Internal Server Error)
(I see the same thing in Firefox, and no other errors are present in browser)

I am not using HTTPS for my Taiga installation yet (On LAN).

I have tried with several different (key, token) pairs, that are all confirmed with curl
I have tried combinations of
TRELLO_IMPORTER_API_KEY: "12abe54553298739cdfe394497712ef3"
TRELLO_IMPORTER_API_KEY: 12abe54553298739cdfe394497712ef3
(ie: with and without quotes)

Workarounds
I have no workaround. We are unable to import Trello projects.

Screenshots
Not applicable

Taiga environment
Taiga6

Log of incident from docker-compose:
taiga-back_1 | Content-Type: text/plain; charset="utf-8"
taiga-back_1 | MIME-Version: 1.0
taiga-back_1 | Content-Transfer-Encoding: 7bit
taiga-back_1 | Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error:
taiga-back_1 | /api/v1/importers/trello/auth_url
taiga-back_1 | From: root@localhost
taiga-back_1 | To: [email protected]
taiga-back_1 | Date: Wed, 16 Feb 2022 12:20:34 -0000
taiga-back_1 | Message-ID: 164501403415.45.9413826841150724929@191f635416e9
taiga-back_1 |
taiga-back_1 | Internal Server Error: /api/v1/importers/trello/auth_url
taiga-back_1 |
taiga-back_1 | Exception Value: Token request failed with code 400, response was 'Invalid Signature'.
taiga-back_1 | Request information:
taiga-back_1 | USER: admin
taiga-back_1 | -------------------------------------------------------------------------------
taiga-back_1 | ERROR:2022-02-16 12:20:34,143: Internal Server Error: /api/v1/importers/trello/auth_url
taiga-back_1 | Traceback (most recent call last):
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
taiga-back_1 | response = get_response(request)
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
taiga-back_1 | response = self.process_exception_by_middleware(e, request)
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
taiga-back_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
taiga-back_1 | File "/taiga-back/taiga/base/api/viewsets.py", line 95, in view
taiga-back_1 | return self.dispatch(request, *args, **kwargs)
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
taiga-back_1 | return view_func(*args, **kwargs)
taiga-back_1 | File "/taiga-back/taiga/base/api/views.py", line 449, in dispatch
taiga-back_1 | response = self.handle_exception(exc)
taiga-back_1 | File "/taiga-back/taiga/base/api/views.py", line 447, in dispatch
taiga-back_1 | response = handler(request, *args, **kwargs)
taiga-back_1 | File "/taiga-back/taiga/importers/trello/api.py", line 105, in auth_url
taiga-back_1 | (oauth_token, oauth_secret, url) = TrelloImporter.get_auth_url()
taiga-back_1 | File "/taiga-back/taiga/importers/trello/importer.py", line 512, in get_auth_url
taiga-back_1 | response = session.fetch_request_token(request_token_url)
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/requests_oauthlib/oauth1_session.py", line 287, in fetch_request_token
taiga-back_1 | token = self._fetch_token(url, **request_kwargs)
taiga-back_1 | File "/opt/venv/lib/python3.7/site-packages/requests_oauthlib/oauth1_session.py", line 369, in _fetch_token
taiga-back_1 | raise TokenRequestDenied(error % (r.status_code, r.text), r)
taiga-back_1 | requests_oauthlib.oauth1_session.TokenRequestDenied: Token request failed with code 400, response was 'Invalid Signature'.
taiga-gateway_1 | xxx.xxx.xxx.yyy - - [16/Feb/2022:12:20:34 +0000] "GET /api/v1/importers/trello/auth_url HTTP/1.1" 500 27 "http://xxx.xxx.xxx.zzz:9000/project/new/import" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0" "-"

Desktop (please complete the following information):

  • OS:
    I have tested this on Ubuntu 20.04 LTS running in two different Virtual Machines.
    Windows 10, Hyper V
    and
    ubuntu 16.04 lts

  • Browser / Version:
    From windows : Firefox 97 and Crome 98.0.4758.102 gives same results
    (Browser on Ubuntu VM gives same results)

Additional context
This issue is posted on : [email protected] / 16feb
with subject : [Trello importer problem : 'Invalid Signature']

Test Result Detail [Q]

Hello Everyone.
I created an app for Django 3.2 that utilized some new features introduced lately. I run into some issues when trying to use taiga-back as a base project for my apps. If you can provide any help or suggestions will be much appreciated.
This my terminal result after running the test:

Test Result

Please note: This test result is completed with default settings and packages.

~/taiga-back - branch(main) $ python -Wa manage.py test
No django tests.
Try: py.test
~/taiga-back - branch(main) $ PYTHONWARNINGS=always pytest tests --capture=no
============================= test session starts =============================
platform linux -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
django: settings: tests.config (from ini)
rootdir: ~/taiga-back, configfile: pytest.ini
plugins: celery-4.3.0, Faker-8.6.0, django-4.4.0
collected 1658 items                                                                                                                                                                    

tests/integration/test_application_tokens.py .......
tests/integration/test_attachments.py ........
tests/integration/test_auth.py .........................
tests/integration/test_contact.py ....
tests/integration/test_custom_attributes_epics.py ........
tests/integration/test_custom_attributes_issues.py ........
tests/integration/test_custom_attributes_tasks.py ........
tests/integration/test_custom_attributes_user_stories.py .......
tests/integration/test_emails.py .
tests/integration/test_epics.py ............
tests/integration/test_epics_tags.py ....
tests/integration/test_exporter_api.py ......
tests/integration/test_fan_projects.py .....
tests/integration/test_feedback.py ..
tests/integration/test_history.py ............
tests/integration/test_hooks_bitbucket.py ..............................
tests/integration/test_hooks_github.py ............................
tests/integration/test_hooks_gitlab.py ........................................
tests/integration/test_hooks_gogs.py ...................
tests/integration/test_importer_api.py ...........................................................ERROR:2021-07-27 17:47:14,917: 

Error loading dump by user1150 <[email protected]>:"


REASON:
-------
error importing memberships

DETAILS:
--------
{
    "memberships": [
        {
            "role": [
                "name=\"Role\" not found in this project"
            ]
        },
        {
            "role": [
                "name=\"Role\" not found in this project"
            ]
        },
        {
            "role": [
                "name=\"Role\" not found in this project"
            ]
        },
        {
            "role": [
                "name=\"Role\" not found in this project"
            ]
        },
        {
            "role": [
                "name=\"Role\" not found in this project"
            ]
        }
    ]
}

TRACE ERROR:
------------
Traceback (most recent call last):
  File "~/taiga-back/taiga/export_import/tasks.py", line 100, in load_project_dump
    project = services.store_project_from_dict(dump, user)
  File "~/taiga-back/taiga/export_import/services/store.py", line 924, in store_project_from_dict
    _populate_project_object(project, data)
  File "~/taiga-back/taiga/export_import/services/store.py", line 840, in _populate_project_object
    check_if_there_is_some_error(_("error importing memberships"), project)
  File "~/taiga-back/taiga/export_import/services/store.py", line 831, in check_if_there_is_some_error
    raise err.TaigaImportError(message, project, errors=errors)
taiga.export_import.exceptions.TaigaImportError: ('error importing memberships', <Project None>)
......
tests/integration/test_importers_asana_api.py ............
tests/integration/test_importers_github_api.py ............
tests/integration/test_importers_jira_api.py ............
tests/integration/test_importers_trello_api.py ............
tests/integration/test_issues.py ..........................................
tests/integration/test_issues_tags.py ....
tests/integration/test_mdrender.py ......
tests/integration/test_memberships.py .......................................
tests/integration/test_milestones.py .............
tests/integration/test_models.py .
tests/integration/test_neighbors.py .................
tests/integration/test_notifications.py ......................................
tests/integration/test_notifications_custom.py .
tests/integration/test_occ.py .............
tests/integration/test_permissions.py ...........
tests/integration/test_project_settings.py ....
tests/integration/test_projects.py .............................................................................................................................
tests/integration/test_references_sequences.py .......
tests/integration/test_roles.py .
tests/integration/test_stats.py ...
tests/integration/test_tasks.py ...........................................
tests/integration/test_tasks_tags.py ....
tests/integration/test_throwttling.py ...
tests/integration/test_timeline.py ......................................
tests/integration/test_totals_projects.py ..
tests/integration/test_us_autoclosing.py ............
tests/integration/test_users.py ..................................................
tests/integration/test_userstorage_api.py .....
tests/integration/test_userstories_tags.py .....
tests/integration/test_vote_issues.py ......
tests/integration/test_vote_tasks.py ......
tests/integration/test_vote_userstories.py ......
tests/integration/test_votes.py .....
tests/integration/test_watch_issues.py .......
tests/integration/test_watch_milestones.py ....
tests/integration/test_watch_projects.py ........
tests/integration/test_watch_tasks.py .......
tests/integration/test_watch_userstories.py .......
tests/integration/test_watch_wikipages.py ......
tests/integration/test_webhooks.py .
tests/integration/test_wikilinks.py ...
tests/integration/resources_permissions/test_application_tokens_resources.py ........
tests/integration/resources_permissions/test_attachment_resources.py .................................
tests/integration/resources_permissions/test_auth_resources.py ....
tests/integration/resources_permissions/test_contact.py .
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py ..........
tests/integration/resources_permissions/test_epics_related_userstories_resources.py .......
tests/integration/resources_permissions/test_epics_resources.py .....................
tests/integration/resources_permissions/test_feedback.py .
tests/integration/resources_permissions/test_history_resources.py .........................
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py ..........
tests/integration/resources_permissions/test_issues_resources.py ..ERROR:2021-07-27 18:07:47,933: Filtering project diferent value than an integer: -ERROR-
.....................
tests/integration/resources_permissions/test_milestones_resources.py ...........
tests/integration/resources_permissions/test_modules_resources.py ....
tests/integration/resources_permissions/test_projects_choices_resources.py .................................................................................
tests/integration/resources_permissions/test_projects_resource.py ............................
tests/integration/resources_permissions/test_resolver_resources.py .
tests/integration/resources_permissions/test_search_resources.py .
tests/integration/resources_permissions/test_storage_resources.py ......
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py ..........
tests/integration/resources_permissions/test_tasks_resources.py .....................
tests/integration/resources_permissions/test_timelines_resources.py ..
tests/integration/resources_permissions/test_users_resources.py .................
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py ..........
tests/integration/resources_permissions/test_userstories_resources.py .......................
tests/integration/resources_permissions/test_webhooks_resources.py .............
tests/integration/resources_permissions/test_wiki_resources.py ......................
tests/unit/test_slug.py ..
tests/unit/auth/test_authentication.py .
tests/unit/auth/test_token_denylist.py .....
tests/unit/auth/test_tokens.py .
tests/integration/test_projects.py .....
tests/integration/test_searches.py ....
tests/integration/test_users.py ..
tests/integration/test_userstories.py .................................................................
tests/integration/test_userstories_update_backlog_order.py ...............
tests/integration/test_userstories_update_kanban_order.py .......................
tests/integration/test_webhooks_epics.py ........
tests/integration/test_webhooks_issues.py .....
tests/integration/test_webhooks_milestones.py ...
tests/integration/test_webhooks_signals.py ...
tests/integration/test_webhooks_tasks.py .....
tests/integration/test_webhooks_userstories.py .......
tests/integration/test_webhooks_wikipages.py ....
tests/unit/test_attachments_services.py ...
tests/unit/test_export.py ...
tests/unit/test_import.py .
tests/unit/test_milestones.py .................
tests/unit/test_serializer_mixins.py .
tests/unit/test_timeline.py .....
tests/unit/test_utils.py ...........................
tests/unit/test_attachments_services.py ...........
tests/unit/test_base_api_permissions.py .
tests/unit/test_common_throttle.py ......................
tests/unit/test_due_date_serializers.py .....
tests/unit/test_mdrender.py ......................................
tests/unit/test_notifications_squashing.py ......
tests/unit/test_order_updates.py .............
tests/unit/test_slug.py ...
tests/unit/auth/test_authentication.py .....
tests/unit/auth/test_backends.py ....................
tests/unit/auth/test_tokens.py ..........................

=========== warnings summary ============
taiga/mdrender/service.py:40
  ~/taiga-back/taiga/mdrender/service.py:40: DeprecationWarning: 'etree' is deprecated. Use 'xml.etree.ElementTree' instead.
    from .extensions.wikilinks import WikiLinkExtension

taiga/mdrender/service.py:42
  ~/taiga-back/taiga/mdrender/service.py:42: DeprecationWarning: 'etree' is deprecated. Use 'xml.etree.ElementTree' instead.
    from .extensions.mentions import MentionsExtension

taiga/mdrender/service.py:43
  ~/taiga-back/taiga/mdrender/service.py:43: DeprecationWarning: 'etree' is deprecated. Use 'xml.etree.ElementTree' instead.
    from .extensions.references import TaigaReferencesExtension

taiga/base/utils/collections.py:11
  ~/taiga-back/taiga/base/utils/collections.py:11: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
    class OrderedSet(collections.MutableSet):

tests/integration/test_application_tokens.py: 1 warning
tests/integration/test_attachments.py: 8 warnings
tests/integration/test_custom_attributes_issues.py: 6 warnings
tests/integration/test_custom_attributes_tasks.py: 8 warnings
tests/integration/test_custom_attributes_user_stories.py: 6 warnings
tests/integration/test_emails.py: 1 warning
tests/integration/test_epics.py: 9 warnings
tests/integration/test_exporter_api.py: 5 warnings
tests/integration/test_fan_projects.py: 5 warnings
tests/integration/test_history.py: 24 warnings
tests/integration/test_hooks_bitbucket.py: 33 warnings
tests/integration/test_hooks_github.py: 36 warnings
tests/integration/test_hooks_gitlab.py: 42 warnings
tests/integration/test_hooks_gogs.py: 20 warnings
tests/integration/test_importer_api.py: 25 warnings
tests/integration/test_issues.py: 39 warnings
tests/integration/test_issues_tags.py: 5 warnings
tests/integration/test_milestones.py: 17 warnings
tests/integration/test_models.py: 1 warning
tests/integration/test_neighbors.py: 3 warnings
tests/integration/test_notifications.py: 58 warnings
tests/integration/test_notifications_custom.py: 4 warnings
tests/integration/test_occ.py: 11 warnings
tests/integration/test_permissions.py: 1 warning
tests/integration/test_project_settings.py: 2 warnings
tests/integration/test_projects.py: 109 warnings
tests/integration/test_references_sequences.py: 6 warnings
tests/integration/test_stats.py: 3 warnings
tests/integration/test_tasks.py: 46 warnings
tests/integration/test_tasks_tags.py: 6 warnings
tests/integration/test_throwttling.py: 3 warnings
tests/integration/test_timeline.py: 48 warnings
tests/integration/test_totals_projects.py: 2 warnings
tests/integration/test_us_autoclosing.py: 12 warnings
tests/integration/test_users.py: 9 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 6 warnings
tests/integration/test_vote_tasks.py: 8 warnings
tests/integration/test_vote_userstories.py: 10 warnings
tests/integration/test_watch_issues.py: 8 warnings
tests/integration/test_watch_milestones.py: 2 warnings
tests/integration/test_watch_projects.py: 7 warnings
tests/integration/test_watch_tasks.py: 10 warnings
tests/integration/test_watch_userstories.py: 15 warnings
tests/integration/resources_permissions/test_attachment_resources.py: 17 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 7 warnings
tests/integration/resources_permissions/test_epics_resources.py: 20 warnings
tests/integration/resources_permissions/test_history_resources.py: 10 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 10 warnings
tests/integration/resources_permissions/test_issues_resources.py: 12 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 11 warnings
tests/integration/resources_permissions/test_projects_choices_resources.py: 81 warnings
tests/integration/resources_permissions/test_projects_resource.py: 1 warning
tests/integration/resources_permissions/test_resolver_resources.py: 1 warning
tests/integration/resources_permissions/test_search_resources.py: 1 warning
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 16 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 114 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 28 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 252 warnings
tests/integration/test_searches.py: 2 warnings
tests/integration/test_userstories.py: 116 warnings
tests/integration/test_userstories_update_backlog_order.py: 30 warnings
tests/integration/test_userstories_update_kanban_order.py: 39 warnings
tests/integration/test_webhooks_epics.py: 3 warnings
tests/integration/test_webhooks_issues.py: 6 warnings
tests/integration/test_webhooks_signals.py: 21 warnings
tests/integration/test_webhooks_tasks.py: 17 warnings
tests/integration/test_webhooks_userstories.py: 24 warnings
tests/unit/test_attachments_services.py: 2 warnings
tests/unit/test_export.py: 3 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_milestones.py: 17 warnings
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py:1066: RemovedInDjango30Warning: Remove the context parameter from PickledObjectField.from_db_value(). Support for it will be removed in Django 3.0.
    warnings.warn(

tests/integration/test_application_tokens.py::test_own_tokens_listing
tests/integration/test_application_tokens.py::test_own_tokens_listing
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/query.py:1242: RemovedInDjango31Warning: Project QuerySet won't use Meta.ordering in Django 3.1. Add .order_by('name', 'id') to retain the current query.
    self._result_cache = list(self._iterable_class(self))

tests/integration/test_attachments.py::test_create_attachment_with_long_file_name
tests/unit/test_mdrender.py::test_render_triple_quote_and_lang_code
  ~/taiga-back/.venv/lib/python3.9/site-packages/markdown/inlinepatterns.py:209: DeprecationWarning: Flags not at the start of the expression '^(.*?)(?i)\\b((?:(?:f' (truncated)
    self.compiled_re = re.compile(r"^(.*?)%s(.*)$" % pattern,

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/autolink.py:49: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add('gfm-autolink', autolink, '_end')

tests/integration/test_attachments.py::test_create_attachment_with_long_file_name
tests/unit/test_mdrender.py::test_render_triple_quote_and_lang_code
  ~/taiga-back/.venv/lib/python3.9/site-packages/markdown/inlinepatterns.py:209: DeprecationWarning: Flags not at the start of the expression '^(.*?)\\b(?i)([a-z0-9' (truncated)
    self.compiled_re = re.compile(r"^(.*?)%s(.*)$" % pattern,

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/automail.py:31: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add('gfm-automail', automail, '_end')

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/semi_sane_lists.py:38: DeprecationWarning: Using setitem to register a processor or pattern is deprecated. Use the `register` method instead.
    md.parser.blockprocessors['olist'] = SemiSaneOListProcessor(md.parser)

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/semi_sane_lists.py:39: DeprecationWarning: Using setitem to register a processor or pattern is deprecated. Use the `register` method instead.
    md.parser.blockprocessors['ulist'] = SemiSaneUListProcessor(md.parser)

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/strikethrough.py:25: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add('gfm-strikethrough', pattern, '_end')

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/wikilinks.py:27: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add("wikilinks",

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/wikilinks.py:30: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.treeprocessors.add("relative_to_absolute_links",

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/emojify.py:163: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.preprocessors.add('emojify',

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/mentions.py:49: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add("mentions", mentionsPattern, "_end")

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/references.py:49: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.inlinePatterns.add('taiga-references', referencesPattern, '_begin')

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/target_link.py:19: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.treeprocessors.add("target_blank_links",

tests/integration/test_attachments.py: 2 warnings
tests/integration/test_custom_attributes_epics.py: 5 warnings
tests/integration/test_custom_attributes_issues.py: 5 warnings
tests/integration/test_custom_attributes_tasks.py: 5 warnings
tests/integration/test_custom_attributes_user_stories.py: 2 warnings
tests/integration/test_epics.py: 23 warnings
tests/integration/test_epics_tags.py: 15 warnings
tests/integration/test_history.py: 36 warnings
tests/integration/test_hooks_bitbucket.py: 40 warnings
tests/integration/test_hooks_github.py: 46 warnings
tests/integration/test_hooks_gitlab.py: 52 warnings
tests/integration/test_hooks_gogs.py: 23 warnings
tests/integration/test_importer_api.py: 27 warnings
tests/integration/test_issues.py: 20 warnings
tests/integration/test_issues_tags.py: 15 warnings
tests/integration/test_mdrender.py: 6 warnings
tests/integration/test_milestones.py: 15 warnings
tests/integration/test_notifications.py: 116 warnings
tests/integration/test_notifications_custom.py: 5 warnings
tests/integration/test_occ.py: 40 warnings
tests/integration/test_projects.py: 15 warnings
tests/integration/test_tasks.py: 23 warnings
tests/integration/test_tasks_tags.py: 15 warnings
tests/integration/test_throwttling.py: 1 warning
tests/integration/test_timeline.py: 55 warnings
tests/integration/test_userstories_tags.py: 16 warnings
tests/integration/test_vote_issues.py: 4 warnings
tests/integration/test_vote_tasks.py: 4 warnings
tests/integration/test_vote_userstories.py: 4 warnings
tests/integration/test_watch_issues.py: 9 warnings
tests/integration/test_watch_tasks.py: 9 warnings
tests/integration/test_watch_userstories.py: 9 warnings
tests/integration/test_watch_wikipages.py: 4 warnings
tests/integration/test_wikilinks.py: 1 warning
tests/integration/resources_permissions/test_attachment_resources.py: 120 warnings
tests/integration/resources_permissions/test_epics_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_epics_related_userstories_resources.py: 5 warnings
tests/integration/resources_permissions/test_epics_resources.py: 371 warnings
tests/integration/resources_permissions/test_history_resources.py: 90 warnings
tests/integration/resources_permissions/test_issues_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_issues_resources.py: 371 warnings
tests/integration/resources_permissions/test_milestones_resources.py: 4 warnings
tests/integration/resources_permissions/test_projects_resource.py: 4 warnings
tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 371 warnings
tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py: 20 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 381 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 417 warnings
tests/integration/test_userstories.py: 73 warnings
tests/integration/test_userstories_update_backlog_order.py: 24 warnings
tests/integration/test_userstories_update_kanban_order.py: 26 warnings
tests/integration/test_webhooks_epics.py: 24 warnings
tests/integration/test_webhooks_issues.py: 21 warnings
tests/integration/test_webhooks_milestones.py: 3 warnings
tests/integration/test_webhooks_signals.py: 72 warnings
tests/integration/test_webhooks_tasks.py: 21 warnings
tests/integration/test_webhooks_userstories.py: 28 warnings
tests/integration/test_webhooks_wikipages.py: 14 warnings
tests/unit/test_import.py: 3 warnings
tests/unit/test_mdrender.py: 34 warnings
  ~/taiga-back/taiga/mdrender/extensions/refresh_attachment.py:24: DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
    md.treeprocessors.add("refresh_attachment",

tests/integration/test_auth.py::test_respond_201_when_public_registration_is_enabled
  ~/taiga-back/.venv/lib/python3.9/site-packages/jinja2/environment.py:362: DeprecationWarning: The 'with' extension is deprecated and will be removed in Jinja 3.1. This is built in now.
    self.extensions = load_extensions(self, extensions)

tests/integration/test_auth.py::test_respond_201_when_public_registration_is_enabled
  ~/taiga-back/.venv/lib/python3.9/site-packages/jinja2/environment.py:362: DeprecationWarning: The 'autoescape' extension is deprecated and will be removed in Jinja 3.1. This is built in now.
    self.extensions = load_extensions(self, extensions)

tests/integration/test_auth.py::test_respond_201_when_public_registration_is_enabled
  ~/taiga-back/.venv/lib/python3.9/site-packages/django_jinja/builtins/extensions.py:178: DeprecationWarning: 'contextfunction' is renamed to 'pass_context', the old name will be removed in Jinja 3.1.
    def _url_reverse(self, context, name, *args, **kwargs):

tests/integration/test_epics.py::test_update_epic_order
  ~/taiga-back/taiga/events/events.py:180: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
    assert isinstance(ids, collections.Iterable)

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_disabled_and_gzip
  ~/taiga-back/taiga/export_import/api.py:69: FutureWarning: GzipFile was opened for writing, but this will change in future Python releases.  Specify the mode argument for opening it for writing.
    services.render_project(project, gzip.GzipFile(fileobj=outfile))

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_disabled_and_gzip
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/7/6/2/e/da55f03526aa161d89734eabc356422640dba78f9711a475ac0a3d3e38ae/example.dat'>
    gc.collect()

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_enabled
  ~/taiga-back/.venv/lib/python3.9/site-packages/celery/app/amqp.py:6: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
    from collections import Mapping, namedtuple

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_enabled
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/7/9/6/d/086604ffb17ae1e1eefc8a3121a9a0e86eb2fcb70a08e6ee64a8d7a59aec/example.dat'>
    gc.collect()

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_enabled_and_gzip
  ~/taiga-back/taiga/export_import/tasks.py:39: FutureWarning: GzipFile was opened for writing, but this will change in future Python releases.  Specify the mode argument for opening it for writing.
    services.render_project(project, gzip.GzipFile(fileobj=outfile))

tests/integration/test_exporter_api.py::test_valid_project_export_with_celery_enabled_and_gzip
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/1/8/b/d/4f93990d3d08cb11e8ae817561fb27baeaceaec47a8a039a90be0c872b39/example.dat'>
    gc.collect()

tests/integration/test_exporter_api.py::test_valid_project_with_throttling
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/e/4/c/7/f7484de6d002ea59ff03b76c79982f03373a42557f71e92215f07d3ac4a1/example.dat'>
    gc.collect()

tests/integration/test_hooks_bitbucket.py: 7 warnings
tests/integration/test_hooks_github.py: 7 warnings
tests/integration/test_hooks_gitlab.py: 9 warnings
tests/integration/test_hooks_gogs.py: 3 warnings
tests/integration/test_notifications.py: 4 warnings
tests/integration/resources_permissions/test_epics_resources.py: 21 warnings
tests/integration/resources_permissions/test_issues_resources.py: 21 warnings
tests/integration/resources_permissions/test_tasks_resources.py: 21 warnings
tests/integration/resources_permissions/test_userstories_resources.py: 21 warnings
tests/integration/resources_permissions/test_wiki_resources.py: 20 warnings
  ~/taiga-back/taiga/mdrender/templatetags/functions.py:16: DeprecationWarning: 'jinja2.Markup' is deprecated and will be removed in Jinja 3.1. Import 'markupsafe.Markup' instead.
    return Markup(render(project, text))

tests/integration/test_hooks_github.py::test_push_event_task_processing
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py:1315: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/4/0/3/2/b55de32ca97a989481e880dc7452214063305b8690dbc3e03a70b726ab33/example.dat'>
    result.append('(%s)' % ', '.join(qn(f.column) for f in fields))

tests/integration/test_importer_api.py::test_invalid_us_import_with_extra_data
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py:1296: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/a/4/4/1/11a4db36ed677562dcb1e6d4fa183310c54d14f0a54681c32be9b22ff297/imported-attachment' mode='rb' closefd=True>
    sql_and_param_pair_rows = (zip(*row) for row in rows_of_fields_as_sql)

tests/integration/test_importer_api.py::test_invalid_task_import_with_extra_data
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/utils.py:95: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/a/4/6/4/74f7cb7dfc37e70fa51abc7957d3470b26aa21e5268e7ebdf2707883ea00/imported-attachment' mode='rb' closefd=True>
    with self:

tests/integration/test_importer_api.py::test_invalid_issue_import_with_extra_data
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/utils.py:95: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/d/7/a/6/7135d96bffe79905ef5285c1c80c515dd94658459f038b977e010e5ba12f/imported-attachment' mode='rb' closefd=True>
    with self:

tests/integration/test_importer_api.py::test_invalid_wiki_page_import_with_extra_data
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/backends/utils.py:25: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/6/0/6/d/c443142cc41624ff75c491f2abd3a7669e46e8e703ba7bc92a65b53c7b7b/imported-attachment' mode='rb' closefd=True>
    return self.db.wrap_database_errors(cursor_attr)

tests/integration/test_issues.py::test_promote_issue_to_us
  ~/taiga-back/.venv/lib/python3.9/site-packages/bleach/_vendor/html5lib/html5parser.py:435: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/c/b/f/8/116ed297bd797d3e4223f7e9ce5f15861187b3c6e5a26f7076a36b5c32de/example.dat' mode='rb' closefd=True>
    self.__endTagCache = {}

tests/integration/test_issues.py::test_promote_issue_to_us
  ~/taiga-back/.venv/lib/python3.9/site-packages/bleach/_vendor/html5lib/html5parser.py:435: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/8/7/c/f/f44f4c415dcfaea31678610658de547e9fa3c3cc15ba4d6fde5fc3f86a3b/example.dat' mode='rb' closefd=True>
    self.__endTagCache = {}

tests/integration/test_mdrender.py::test_proccessor_valid_email
tests/unit/test_mdrender.py::test_render_url_autolinks
tests/unit/test_mdrender.py::test_render_url_autolinks_without_http
tests/unit/test_mdrender.py::test_render_url_automail
  ~/taiga-back/.venv/lib/python3.9/site-packages/markdown/treeprocessors.py:286: DeprecationWarning: 'etree' is deprecated. Use 'xml.etree.ElementTree' instead.
    node = pattern.handleMatch(match)

tests/integration/test_tasks.py::test_promote_task_to_us
  ~/taiga-back/.venv/lib/python3.9/site-packages/bleach/_vendor/html5lib/html5parser.py:435: ResourceWarning: unclosed file <_io.FileIO name='/tmp/attachments/0/3/2/2/0e2e70cc2566d0cd972d3faa6e4880eef2d164c1cfbecad04ddce2caa5c2/example.dat' mode='rb' closefd=True>
    self.__endTagCache = {}

tests/integration/test_timeline.py::test_user_data_for_unactived_users
tests/integration/test_timeline.py::test_user_data_for_unactived_users
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:57:22.296776) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_timeline.py::test_epic_related_uss
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField Timeline.created received a naive datetime (2021-07-27 17:57:25.592954) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_timeline.py::test_epic_related_uss
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField Timeline.created received a naive datetime (2021-07-27 17:57:25.594167) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_timeline.py::test_epic_related_uss
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField Timeline.created received a naive datetime (2021-07-27 17:57:25.595339) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_timeline.py::test_epic_related_uss
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField Timeline.created received a naive datetime (2021-07-27 17:57:25.596509) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_delete_self_user
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:20.563650) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_delete_self_user_with_date_cancelled
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:20.767586) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_delete_self_user_blocking_projects
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:20.993074) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_delete_self_user_remove_membership_projects
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:21.694385) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_deleted_user_can_not_use_its_token
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:21.920615) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_cancel_self_user_with_valid_token
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:22.119174) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/test_users.py::test_cancel_self_user_with_date_cancelled
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 17:58:22.690597) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/integration/resources_permissions/test_milestones_resources.py: 14 warnings
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/query.py:1242: RemovedInDjango31Warning: UserStory QuerySet won't use Meta.ordering in Django 3.1. Add .order_by('project', 'backlog_order', 'ref') to retain the current query.
    self._result_cache = list(self._iterable_class(self))

tests/integration/resources_permissions/test_users_resources.py::test_user_delete
  ~/taiga-back/.venv/lib/python3.9/site-packages/django/db/models/fields/__init__.py:1424: RuntimeWarning: DateTimeField User.date_cancelled received a naive datetime (2021-07-27 18:16:23.826050) while time zone support is active.
    warnings.warn("DateTimeField %s received a naive datetime (%s)"

tests/unit/test_export.py::test_export_user_story_finish_date
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/a/0/e/4/2089f1b29ef37e621063b3b8694103ea7e92af938277b246a160be01972e/example.dat'>
    gc.collect()

tests/unit/test_export.py::test_export_epic_with_user_stories
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/f/f/8/8/18bd72f0876026320d50cedf823c940e6a2fd28dbb5707a9e0ec4d936550/example.dat'>
    gc.collect()

tests/unit/test_import.py::test_import_epic_with_user_stories
  ~/taiga-back/taiga/export_import/services/render.py:65: ResourceWarning: unclosed file <_io.BufferedReader name='/tmp/project/5/2/3/6/80ae9565c3afe096001086b7bd549568f858e818b633d6c24ad6e439ff86/example.dat'>
    gc.collect()

-- Docs: https://docs.pytest.org/en/stable/warnings.html
===============1658 passed, 40446 warnings in 2709.03s (0:45:09)===============
~/taiga-back - branch(main) $

[BUG] container image cannot run in restricted environments

Describe the bug

It would be great to allow the image to run as non-root. Ideally with a random user (as required by OpenShift/OKD). I can prepare a pull that only changes the entrypoint and chowns the env-File.

How can we reproduce the behavior
Run the container image as non-root, e.g. podman run --rm --user 99 taigaio/taiga-back:

./docker/entrypoint.sh: line 15: can't create /taiga-events/.env: Permission denied

Workarounds
Run the image as root.

[FR] Dark Mode along Default Theme

Definitely need a dark mode.

I understand moving from 5.0 to 6.0, themes got dropped. But it would be nice to get at least a simple dark-mode.

[Q] S3 file storage

I am running my taiga in an ec2 instance using the docker taiga project. I'm trying to configure the storage to use s3 instead of container storage.

I have this right now:

DEFAULT_FILE_STORAGE=storages.backends.s3boto3.S3Boto3Storage
AWS_STORAGE_BUCKET_NAME=mybucketname

After restarting my containers, I verified they were applied in the container. When I uploaded my profile picture, it didn't upload to my s3.

Let me know what I have to do.

Thanks!

[FR] appimage

Hello

Can you provide an appimage or Flatpak for single or personal usage ?

thanks in advance

Some tests are skipped due to duplicate names

[FR] Permissions - View/Comment Access for Created or Watching Issues/User Stories Only (not all)

Please describe the problem / need you are trying to solve.
One of the ways my team uses taiga is as a help desk ticketing/tracking system. It wasn't necessarily built for this, but all-in-all, it works great for this purpose! We'd like to have one more permissions level: where the owner of an issue/user story can see only the issues/user story they own/create.

Describe the feature or the improvement you'd like and what are you trying to achieve.
Instead of logging in and seeing all or none of the issues, a user would log in and be able to see the issues they created or, if they are added as a watcher, they could also see those. I'd probably want to allow the user to make comments on these also if they have this permission level. This would be helpful for quicker communication with teams and end-users. Right now we are manually emailing updates as we work through issues and user stories.

Describe alternatives you've considered
I've considered using the API to build out my own implementation of this in a web app or desktop app but a user could login to taiga via the web and see things that do not pertain to them, or complain that their issues are not being prioritized over others.

Additional context
I understand this might be an edge case? Maybe there are others who could benefit from this also. There would need to be front-end changes made to accommodate this as well.

[FR] Matrix integration

Please describe the problem / need you are trying to solve.

This is beyond the current webhook capabilities, and could require some changes to the backend.

Currently there is no federation available for Taiga, so there is no way for a self-hosted user on a different server to comment on an issue on a different server without making a separate account. While full federation would be a long term issue, as a first-step an integration with matrix for the issues description/comments etc. could be useful. E.g. having a public project and allowing any user with a matrix account to comment and create issues directly, either by inputting their matrix account and authorization, or by sending a message directly on matrix.

Describe the feature or the improvement you'd like and what are you trying to achieve.

Matrix protocol allows for any users on any server to communicate with one another, and to bridge with other environments like Slack or Discord. There are even implementations of web comments through matrix (Cactus). So a minimal matrix integration that can be applied to Taiga (beyond the webhook), is to integrate the comments with matrix chats, i.e. all taiga comments are translated to a matrix message and vice-versa.

Once MSC2836: Threading is implemented the translation between matrix and taiga could be as follows:

Taiga Matrix
Project Space/Room
Issue Top-level message
Comment Threaded message to top-level

Necessary changes to Taiga

  • taiga-back: Allow for at least the comments, description and attachments to be in a separate "database" or accessed via plugin
  • taiga-front: Allow dynamical user to be linked from the matrix identity. This would be helpful for future federation as well. Bonus: profiles could be generated on the fly by requesting them from Matrix.

Plugin

As for the plugin, this is more on the Matrix side to implement a bot to interface with the Taiga backend via API or directly. The bot would act as intermediary for non-Matrix Taiga users to forward messages, and even access control comments and issue creation, participation in a room etc.

Describe alternatives you've considered

Alternatively, the matrix bot could interface with the current API to bridge. However, the users comments would appear clunky as they have to be prefixed by something like "@user:matrix.org said: ....". All changes would have to be mirrored back-and-forth, and who knows what race situation can occur.

Eventually, the matrix server can act as a database by itself if custom spaces/rooms are made available, so the severity, status, etc. can all live on the matrix side. Then there would be full federation available, and we would be able to host projects on various servers, while also publicly announcing them on tree.taiga.io. This would also allow dual-synchronization of issues at least on gitea (but maybe even Github if this catches momentum) as similar interface is built there.

[BUG] Can not invite new members to project - API error 500

Describe the bug
Users are not being invited to the project. First I thought it was an SMTP issue (using my own mail server - https://poste.io), but I found out that the API is giving me error 500 for the endpoint /api/v1/memberships/bulk_create

I have a Caddy web server running on port 80 and 443 to handle HTTPS, all traffic is going to the nginx with provided configuration, no changes.

How can we reproduce the behavior
Run self-hosted Taiga via docker compose, create scrum project and add member. Using the stable branch.

Workarounds
None

Screenshots
None

Taiga environment
Self-hosted, stable branch

Desktop (please complete the following information):

  • OS: macOS
  • Browser: Chrome
  • Version: 99.0.4818.0 (Official Build) dev (arm64)

Additional context

[Q] Unable to fall back to normal authentication

Hello - I am having an issue after the latest update.

I am using the contrib LDAP module for users to log in to Taiga.
It seems to be failing to fall back to normal authentication if LDAP fails.

The error log:
LDAP login is invalid.
ERROR:2021-08-31 17:29:03,148: Internal Server Error: /api/v1/auth
Traceback (most recent call last):
File "/opt/venv/lib/python3.7/site-packages/taiga_contrib_ldap_auth_ext/services.py", line 58, in ldap_login_func
username, email, full_name = connector.login(login = login_input, password = password_input)
File "/opt/venv/lib/python3.7/site-packages/taiga_contrib_ldap_auth_ext/connector.py", line 139, in login
raise LDAPUserLoginError({"error_message": "LDAP login is invalid."})
taiga_contrib_ldap_auth_ext.connector.LDAPUserLoginError: {'error_message': 'LDAP login is invalid.'}
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/taiga-back/taiga/base/api/viewsets.py", line 95, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/taiga-back/taiga/base/api/views.py", line 449, in dispatch
response = self.handle_exception(exc)
File "/taiga-back/taiga/base/api/views.py", line 447, in dispatch
response = handler(request, *args, **kwargs)
File "/taiga-back/taiga/auth/api.py", line 77, in create
data = auth_plugins[login_type]'login_func'
File "/opt/venv/lib/python3.7/site-packages/taiga_contrib_ldap_auth_ext/services.py", line 66, in ldap_login_func
return get_auth_plugins()[FALLBACK]"login_func"
KeyError: 'normal'

Email notifications

We have completed our installation of Taiga 6 in our production environment but we are unable to get some email notifications to work. For password reset, project assignment, etc., it works but when assigning a task, no email is sent. We have set up the interface to receive all notifications. We have activated CELERY. We tested the call to send_notifications in manage.py. Nothing to do. Do you have a solution?

Thanks.

[Q] Backend Memory Usage

Hi there! I'm really interested in using taiga, I installed it to run some tests and couldn't help but notice relatively high memory usage of the backend, my mostly empty instance is using ~1GB of RAM between its components.
Of course, I understand this is not a problem for professional teams, but as a small team with limited resource availability, I was wondering if something can be done to decrease memory consumption.

I don't know the inner workings of the software, but taiga-async for example seems to be another whole instance of the main backend, which combined use ~700MB of RAM.

Does the backend really need this amount of memory usage? Could it be possible to reduce its footprint?

[FR] Mention branch in message about new commit

Please describe the problem / need you are trying to solve.
If follow model "commit branch -> dev branch -> main branch" there will be a lot of same comments about same commits. It is annoying.

Describe the feature or the improvement you'd like and what are you trying to achieve.
Specify branch in comment about commit

Describe alternatives you've considered
None

Additional context
I've implemented a kind of quick fix for GitHub integration, here is patch (I'm on stable/6.0.9):

diff --git a/taiga/hooks/event_hooks.py b/taiga/hooks/event_hooks.py
index b66cfba0..7add117c 100644
--- a/taiga/hooks/event_hooks.py
+++ b/taiga/hooks/event_hooks.py
@@ -331,6 +331,8 @@ class BasePushEventHook(BaseEventHook):
             "in the [{platform} commit]({commit_url} \"See commit '{commit_id} - {commit_short_message}'\") "
             "\"{commit_message}\""
         )
+        if kwargs.get("branch", None) is not None:
+            _status_change_message += " in the branch \"{branch}\""
         _simple_status_change_message = _(
             "This issue has been mentioned in the {platform} commit "
             "\"{commit_message}\""
diff --git a/taiga/hooks/github/event_hooks.py b/taiga/hooks/github/event_hooks.py
index e0c93d9e..26c6d9e8 100644
--- a/taiga/hooks/github/event_hooks.py
+++ b/taiga/hooks/github/event_hooks.py
@@ -93,6 +93,12 @@ class PushEventHook(BaseGitHubEventHook, BasePushEventHook):
         result = []
         github_user = self.payload.get('sender', {})
         commits = self.payload.get("commits", [])
+        ref = self.payload.get("ref", None)
+        if ref is not None:
+            re_match = re.search(r"^refs/heads/(.*)", ref)
+            branch = re_match.group(1) if re_match else None
+        else:
+            branch = None
         for commit in filter(None, commits):
             result.append({
                 "user_id": github_user.get('id', None),
@@ -102,6 +108,7 @@ class PushEventHook(BaseGitHubEventHook, BasePushEventHook):
                 "commit_url": commit.get("url", None),
                 "commit_message": commit.get("message").strip(),
                 "commit_short_message": commit.get("message").split("\n")[0].strip(),
+                "branch": branch,
             })
 
         return result

If suggested feature will be considered as plan to include, I'm ready to prepare pull request.

[Q] Changing user's password programmatically

I am writing a script to change a user's password programmatically.

There is API request for that purpose, https://docs.taiga.io/api.html#users-change-password. However that request requires the user's token.

I see that there is a normal login request (https://docs.taiga.io/api.html#auth-normal-login), which returns "User authentication-detail" (https://docs.taiga.io/api.html#object-auth-user-detail), which includes "auth_token".

Is that the token I can use to change the password?

[BUG] docker-compose AssertionError("database connection isn't set to UTC")

database connection isn't set to UTC

On the run of docker-compose up container taiga-docker_taiga-back_1 exit with exit code 1. Failed migration users.0007_auto_20150209_1611 with AssertionError: database connection isn't set to UTC

This is probably the same case as described in https://stackoverflow.com/questions/68024060/assertionerror-database-connection-isnt-set-to-utc

I use PostgreSQL server 14.2 on Debian.

Database was created with command:
create database taiga with owner taiga ; alter database taiga set timezone to 'UTC' ;
or
create database taiga with owner = taiga encoding = 'utf-8' locale = 'en_US.utf8' template = 'template0' ; alter database taiga set timezone to 'UTC' ;

postgresql.conf contains settings:

timezone = 'Europe/Prague'
lc_messages = 'cs_CZ.utf8'
lc_monetary = 'cs_CZ.utf8'
lc_numeric = 'cs_CZ.utf8'
lc_time = 'cs_CZ.utf8'

How can we reproduce the behavior

Use this guide: https://resources.taiga.io/30min-setup/

  • clone repository
  • checkout stable (commit id bd87d40f3c22def83ea6a502d3f16797c2933b2e)
  • edit docker-compose.yml
  • launch-taiga.sh

Workarounds

I don't know

taiga-docker_taiga-back_1 log

Executing pending migrations
Operations to perform:
  Apply all migrations: admin, attachments, auth, bitbucket, contact, contenttypes, custom_attributes, djmail, easy_thumbnails, epics, external_apps, feedback, github, gitlab, gogs, history, issues, likes, milestones, notifications, projects, references, sessions, settings, tasks, telemetry, timeline, token_denylist, users, userstorage, userstories, votes, webhooks, wiki
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying users.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying users.0002_auto_20140903_0916... OK
  Applying projects.0001_initial... OK
  Applying projects.0002_auto_20140903_0920... OK
  Applying attachments.0001_initial... OK
  Applying attachments.0002_add_size_and_name_fields... OK
  Applying attachments.0003_auto_20150114_0954... OK
  Applying attachments.0004_auto_20150508_1141... OK
  Applying attachments.0005_attachment_sha1... OK
  Applying attachments.0006_auto_20160617_1233... OK
  Applying attachments.0007_attachment_from_comment... OK
  Applying attachments.0008_auto_20170201_1053... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying users.0003_auto_20140903_0925... OK
  Applying users.0004_auto_20140913_1914... OK
  Applying users.0005_alter_user_photo... OK
  Applying users.0006_auto_20141030_1132... OK
  Applying bitbucket.0001_initial... OK
  Applying milestones.0001_initial... OK
  Applying issues.0001_initial... OK
  Applying userstories.0001_initial... OK
  Applying userstories.0002_auto_20140903_1301... OK
  Applying userstories.0003_userstory_order_fields... OK
  Applying userstories.0004_auto_20141001_1817... OK
  Applying userstories.0005_auto_20141009_1656... OK
  Applying userstories.0006_auto_20141014_1524... OK
  Applying userstories.0007_userstory_external_reference... OK
  Applying userstories.0008_auto_20141210_1107... OK
  Applying userstories.0009_remove_userstory_is_archived... OK
  Applying projects.0003_auto_20140913_1710... OK
  Applying projects.0004_auto_20141002_2337... OK
  Applying projects.0005_membership_invitation_extra_text... OK
  Applying notifications.0001_initial... OK
  Applying history.0001_initial... OK
  Applying history.0002_auto_20140916_0936... OK
  Applying history.0003_auto_20140917_1405... OK
  Applying history.0004_historyentry_is_hidden... OK
  Applying notifications.0002_historychangenotification... OK
  Applying notifications.0003_auto_20141029_1143... OK
  Applying notifications.0004_watched... OK
  Applying userstories.0010_remove_userstory_watchers... OK
  Applying userstories.0011_userstory_tribe_gig... OK
  Applying tasks.0001_initial... OK
  Applying tasks.0002_tasks_order_fields... OK
  Applying tasks.0003_task_external_reference... OK
  Applying tasks.0004_auto_20141210_1107... OK
  Applying tasks.0005_auto_20150114_0954... OK
  Applying tasks.0006_auto_20150623_1923... OK
  Applying tasks.0007_auto_20150629_1556... OK
  Applying tasks.0008_remove_task_watchers... OK
  Applying tasks.0009_auto_20151104_1131... OK
Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    execute_from_command_line(sys.argv)
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "/opt/venv/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 234, in handle
    fake_initial=fake_initial,
  File "/opt/venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/opt/venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/opt/venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 245, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/opt/venv/lib/python3.7/site-packages/django/db/migrations/migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/opt/venv/lib/python3.7/site-packages/django/db/migrations/operations/special.py", line 190, in database_forwards
    self.code(from_state.apps, schema_editor)
  File "/taiga-back/taiga/users/migrations/0007_auto_20150209_1611.py", line 18, in migrate_github_id
    for user in User.objects.all():
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/query.py", line 274, in __iter__
    self._fetch_all()
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/query.py", line 1242, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/query.py", line 55, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
    return list(result)
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1554, in cursor_iter
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "/opt/venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1554, in <lambda>
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "/opt/venv/lib/python3.7/site-packages/django/db/utils.py", line 96, in inner
    return func(*args, **kwargs)
  File "/opt/venv/lib/python3.7/site-packages/django/db/backends/postgresql/utils.py", line 6, in utc_tzinfo_factory
    raise AssertionError("database connection isn't set to UTC")
AssertionError: database connection isn't set to UTC
  Applying users.0007_auto_20150209_1611...

Taiga environment

Self-hosted, installed with docker

Server:

  • OS: Linux Fedora 35 amd64
  • Docker: 20.10.14, build a224086
  • PostgreSQL: 14.2 on Debian amd64 docker image on another server

[BUG] Error parsing Email templates

taiga-back fails to send out emails I checked the log and I found that it fails to parse CSS and Email templates, here is the log:

taiga-back_1             | WARNING	Property: Unknown Property name. [6:51: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [6:82: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [7:23: mso-table-lspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [7:45: mso-table-rspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [8:17: -ms-interpolation-mode]
taiga-back_1             | ERROR	PropertyValue: Missing token for production Choice(ColorValue, Dimension, URIValue, Value, variable, MSValue, CSSCalc, function): ('HASH', '#f0f0f0f0', 118, 23)
taiga-back_1             | ERROR	No content to parse.
taiga-back_1             | ERROR	PropertyValue: Unknown syntax or no value: #f0f0f0f0
taiga-back_1             | ERROR	CSSStyleDeclaration: Syntax Error in Property: color:#f0f0f0f0
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.3rem [126:17: padding]
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.8rem 3rem [178:17: padding]
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.5rem [271:5: margin-left]
taiga-back_1             | WARNING	Property: Unknown Property name. [291:55: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name.
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:31: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:31: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:31: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:31: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -webkit-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:31: -ms-text-size-adjust]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: mso-table-lspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:20: mso-table-rspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: mso-table-lspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:20: mso-table-rspace]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -ms-interpolation-mode]
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.3rem [1:45: padding]
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.8rem 3rem [1:155: padding]
taiga-back_1             | ERROR	Property: Invalid value for "CSS Level 2.1" property: 0.5rem [1:22: margin-left]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -ms-interpolation-mode]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -ms-interpolation-mode]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -ms-interpolation-mode]
taiga-back_1             | WARNING	Property: Unknown Property name. [1:1: -ms-interpolation-mode]

I think this is a bug. and I am using the docker version.

[Q] Setting up SMTP - SMTP AUTH extension not supported by server.

I have tried multiple settings to try and get email working. I have other services on the same server running in docker and they are able to send out email.

I have tried these settings with no success

EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL: "[email protected]"
EMAIL_HOST: "10.10.100.90"
EMAIL_PORT: "25"

EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL: "[email protected]"
EMAIL_HOST: 10.10.100.90
EMAIL_PORT: 25

EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL: "[email protected]"
EMAIL_HOST: "servername.domain.org"
EMAIL_PORT: "25"

EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL: "[email protected]"
EMAIL_USE_TLS: "False"
EMAIL_USE_SSL: "False"
EMAIL_HOST: "servername.domain.org"
EMAIL_PORT: "25"

And many other possibilities

I this error in the logs:

File "/taiga-back/taiga/projects/api.py", line 1070, in resend_invitation,
File "/taiga-back/taiga/projects/services/invitations.py", line 23, in send_invitation,
services.send_invitation(invitation=invitation),
email.send(),
File "/opt/venv/lib/python3.7/site-packages/django/core/mail/message.py", line 306, in send,
return self.get_connection(fail_silently).send_messages([self]),
File "/opt/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 103, in send_messages,
new_conn_created = self.open(),
File "/opt/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 70, in open,
self.connection.login(self.username, self.password),
File "/usr/local/lib/python3.7/smtplib.py", line 697, in login,
"SMTP AUTH extension not supported by server."),
smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.

What am I missing?

Thanks for any help that you can give.

[FR] assist in the development of the Taiga node on the awesome open source project https://n8n.io/

Please describe the problem / need you are trying to solve.

I use the open source project n8n - think zapier but way cooler.
A taiga node / intergration already exists however it is limiited

I've started a list feature requests for the node here:
https://community.n8n.io/t/taiga-node-feature-requests/11911/3

It would be great if you could contribute to this project with your coding skills and get the node completed or sign up and vote for the features

Love Taiga and thanks for all the hard work!

[BUG] Worker timeout while sending email out

back-end fails to send out email. After a while the following message is logged:

taiga-back_1             | [2022-04-07 09:34:16 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:42)
taiga-back_1             | [2022-04-07 09:34:17 +0000] [67] [INFO] Booting worker with pid: 67

Is there any solution for this ?

[Q] Installing from source - Python requirements install failing

Hello!
I have a problem following the official installation from source code instruction (https://docs.taiga.io/setup-production.html#setup-prod-from-source-code)
Every step is OK until the Install all Python dependencies. After executing the pip install -r requirements.txt command, I get the following output:

Collecting aggdraw==1.3.12
  Using cached aggdraw-1.3.12-cp36-cp36m-manylinux2010_x86_64.whl (793 kB)
Collecting amqp==2.6.1
  Using cached amqp-2.6.1-py2.py3-none-any.whl (48 kB)
Collecting asana==0.10.3
  Using cached asana-0.10.3-py2.py3-none-any.whl (67 kB)
Collecting attrs==21.2.0
  Using cached attrs-21.2.0-py2.py3-none-any.whl (53 kB)
Collecting backoff==1.6.0
  Using cached backoff-1.6.0.tar.gz (10 kB)
Collecting billiard==3.6.4.0
  Using cached billiard-3.6.4.0-py3-none-any.whl (89 kB)
Collecting bleach==3.3.0
  Using cached bleach-3.3.0-py2.py3-none-any.whl (283 kB)
Collecting cairocffi==1.2.0
  Using cached cairocffi-1.2.0.tar.gz (70 kB)
  WARNING: Requested cairocffi==1.2.0 from https://files.pythonhosted.org/packages/84/ca/0bffed5116d21251469df200448667e90acaa5131edea869b44a3fbc73d0/cairocffi-1.2.0.tar.gz#sha256=9a979b500c64c8179fec286f337e8fe644eca2f2cd05860ce0b62d25f22ea140 (from -r requirements.txt (line 21)), but installing version file-.cairocffi-VERSION
WARNING: Discarding https://files.pythonhosted.org/packages/84/ca/0bffed5116d21251469df200448667e90acaa5131edea869b44a3fbc73d0/cairocffi-1.2.0.tar.gz#sha256=9a979b500c64c8179fec286f337e8fe644eca2f2cd05860ce0b62d25f22ea140 (from https://pypi.org/simple/cairocffi/) (requires-python:>=3.6). Requested cairocffi==1.2.0 from https://files.pythonhosted.org/packages/84/ca/0bffed5116d21251469df200448667e90acaa5131edea869b44a3fbc73d0/cairocffi-1.2.0.tar.gz#sha256=9a979b500c64c8179fec286f337e8fe644eca2f2cd05860ce0b62d25f22ea140 (from -r requirements.txt (line 21)) has inconsistent version: filename has '1.2.0', but metadata has 'file-.cairocffi-VERSION'
ERROR: Could not find a version that satisfies the requirement cairocffi==1.2.0 (from versions: 0.1, 0.2, 0.3, 0.3.1, 0.3.2, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.5, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.6, 0.7, 0.7.1, 0.7.2, 0.8.0, 0.8.1, 0.9.0, 1.0.0rc1, 1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.2.0)
ERROR: No matching distribution found for cairocffi==1.2.0

It happens on both stable and main branches. Should I provide more info on my setup configuration?
Thanks!

Select language within project

I think that it should be possible to for a project to use a specific languages. In my case, some projects are in french, others in arabic. It's not related to the user, but to the language used by the team and the project. For arabic (RTL) projects, all Epic's and Stories contents will be written in arabic; so it's not only the theme used by the user. If I'm working on an LTR project, I have to change my settings. I do not think that changing the settings everytime when switching the projects is the good way...

Best,

--
Anas

[Q] setup taiga_contrib_oidc_auth w/ keycloak - (TaigaNext can ignore, maybe a fellow user will have the answer?)

Hello, noticed the taiga_contrib_oidc_auth plugin looks like it will be more supported than community provided plugins so I am working to set up taiga6 to use it with keycloak.

I was able to follow the setup steps and believe I have everything setup correctly yet I'm getting a 404 when I click OPENID CONNECT. I've looked through logs and am not seeing anything useful related to what I'm trying to do.

(Note, harmony.net in these config files is not a real publicly accessible domain. This setup is all onprem.)

What are some troubleshooting steps I could perform? I'm not sure what else to check.

/taiga-back/settings/local.py

from .common import *

# debug
f = open("/tmp/debug.log", "a")
f.write("processing: local.py\n")
f.close()

INSTALLED_APPS += [
    "mozilla_django_oidc",
    "taiga_contrib_oidc_auth",
]

AUTHENTICATION_BACKENDS = list(AUTHENTICATION_BACKENDS) + [
    "taiga_contrib_oidc_auth.oidc.TaigaOIDCAuthenticationBackend",
]

# Add the OIDC urls
ROOT_URLCONF = "settings.urls"

# OIDC Settings
OIDC_CALLBACK_CLASS = "taiga_contrib_oidc_auth.views.TaigaOIDCAuthenticationCallbackView"
OIDC_RP_SCOPES = "openid email profile"
OIDC_RP_SIGN_ALGO = "RS256"
#OIDC_RP_IDP_SIGN_KEY = ""
OIDC_VERIFY_SSL = False
# Set the OIDC provider here.
OIDC_BASE_URL = "https://keycloak.k-prod.harmony.net/auth/realms/harmony/protocol/openid-connect"
# Those URL values work for Ipsilon.
OIDC_OP_JWKS_ENDPOINT = OIDC_BASE_URL + "/certs"
OIDC_OP_AUTHORIZATION_ENDPOINT = OIDC_BASE_URL + "/auth"
OIDC_OP_TOKEN_ENDPOINT = OIDC_BASE_URL + "/token"
OIDC_OP_USER_ENDPOINT = OIDC_BASE_URL + "/userinfo"
# These two are private! Don't commit them to VCS. Getting the values from
# environment variables is a good way.
import os
OIDC_RP_CLIENT_ID = "taiga.k-dev.harmony.net" #os.getenv("OIDC_RP_CLIENT_ID")
OIDC_RP_CLIENT_SECRET = "hidden" #os.getenv("OIDC_RP_CLIENT_SECRET")
#OIDC_RP_CLIENT_ID = os.getenv("OIDC_RP_CLIENT_ID")
#OIDC_RP_CLIENT_SECRET = os.getenv("OIDC_RP_CLIENT_SECRET")

/taiga-back/settings/urls.py

from taiga.urls import *

# debug
f = open("/tmp/debug.log", "a")
f.write("processing: urls.py\n")
f.close()

urlpatterns += [
    url(r"^oidc/", include("mozilla_django_oidc.urls")),
]

image
image

[Q]

Hello, i am installing taiga from source code by manuals https://docs.taiga.io/setup-production.html#_introduction.
Stuck on a paragraph 2.7 Backend Setup.
When execute command DJANGO_SETTINGS_MODULE=settings.config python manage.py migrate --noinput, I get the following error

Operations to perform:
Apply all migrations: admin, attachments, auth, bitbucket, contact, contenttypes, custom_attributes, djmail, easy_thumbnails, epics, external_apps, feedback, github, gitlab, gogs, history, issues, likes, milestones, notifications, projects, references, sessions, settings, tasks, telemetry, timeline, token_denylist, users, userstorage, userstories, votes, webhooks, wiki
Running migrations:
Applying contenttypes.0001_initial... OK
Applying users.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying users.0002_auto_20140903_0916... OK
Applying projects.0001_initial... OK
Applying projects.0002_auto_20140903_0920... OK
Applying attachments.0001_initial... OK
Applying attachments.0002_add_size_and_name_fields... OK
Applying attachments.0003_auto_20150114_0954... OK
Applying attachments.0004_auto_20150508_1141... OK
Applying attachments.0005_attachment_sha1... OK
Applying attachments.0006_auto_20160617_1233... OK
Applying attachments.0007_attachment_from_comment... OK
Applying attachments.0008_auto_20170201_1053... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying users.0003_auto_20140903_0925... OK
Applying users.0004_auto_20140913_1914... OK
Applying users.0005_alter_user_photo... OK
Applying users.0006_auto_20141030_1132... OK
Applying bitbucket.0001_initial... OK
Applying milestones.0001_initial... OK
Applying issues.0001_initial... OK
Applying userstories.0001_initial... OK
Applying userstories.0002_auto_20140903_1301... OK
Applying userstories.0003_userstory_order_fields... OK
Applying userstories.0004_auto_20141001_1817... OK
Applying userstories.0005_auto_20141009_1656... OK
Applying userstories.0006_auto_20141014_1524... OK
Applying userstories.0007_userstory_external_reference... OK
Applying userstories.0008_auto_20141210_1107... OK
Applying userstories.0009_remove_userstory_is_archived... OK
Applying projects.0003_auto_20140913_1710... OK
Applying projects.0004_auto_20141002_2337... OK
Applying projects.0005_membership_invitation_extra_text... OK
Applying notifications.0001_initial... OK
Applying history.0001_initial... OK
Applying history.0002_auto_20140916_0936... OK
Applying history.0003_auto_20140917_1405... OK
Applying history.0004_historyentry_is_hidden... OK
Applying notifications.0002_historychangenotification... OK
Applying notifications.0003_auto_20141029_1143... OK
Applying notifications.0004_watched... OK
Applying userstories.0010_remove_userstory_watchers... OK
Applying userstories.0011_userstory_tribe_gig... OK
Applying tasks.0001_initial... OK
Applying tasks.0002_tasks_order_fields... OK
Applying tasks.0003_task_external_reference... OK
Applying tasks.0004_auto_20141210_1107... OK
Applying tasks.0005_auto_20150114_0954... OK
Applying tasks.0006_auto_20150623_1923... OK
Applying tasks.0007_auto_20150629_1556... OK
Applying tasks.0008_remove_task_watchers... OK
Applying tasks.0009_auto_20151104_1131... OK
Applying users.0007_auto_20150209_1611... OK
Applying users.0008_auto_20150213_1701... OK
Applying users.0009_auto_20150326_1241... OK
Applying users.0010_auto_20150414_0936... OK
Applying timeline.0001_initial... OK
Applying projects.0006_auto_20141029_1040... OK
Applying projects.0007_auto_20141024_1011... OK
Applying projects.0008_auto_20141024_1012... OK
Applying projects.0009_auto_20141024_1037... OK
Applying projects.0010_project_modules_config... OK
Applying projects.0011_auto_20141028_2057... OK
Applying projects.0012_auto_20141210_1009... OK
Applying projects.0013_auto_20141210_1040... OK
Applying projects.0014_userstorystatus_is_archived... OK
Applying projects.0015_auto_20141230_1212... OK
Applying projects.0016_fix_json_field_not_null... OK
Applying projects.0017_fix_is_private_for_projects... OK
Applying projects.0018_auto_20150219_1606... OK
Applying projects.0019_auto_20150311_0821... OK
Applying timeline.0002_auto_20150327_1056... OK
Applying timeline.0003_auto_20150410_0829... OK
Applying timeline.0004_auto_20150603_1312... OK
Applying projects.0020_membership_user_order... OK
Applying projects.0021_auto_20150504_1524... OK
Applying projects.0022_auto_20150701_0924... OK
Applying projects.0023_auto_20150721_1511... OK
Applying projects.0024_auto_20150810_1247... OK
Applying projects.0025_auto_20150901_1600... OK
Applying projects.0026_auto_20150911_1237... OK
Applying projects.0027_auto_20150916_1302... OK
Applying projects.0028_project_is_featured... OK
Applying projects.0029_project_is_looking_for_people... OK
Applying likes.0001_initial... OK
Applying projects.0030_auto_20151128_0757... OK
Applying projects.0031_project_logo... OK
Applying projects.0032_auto_20151202_1151... OK
Applying projects.0033_text_search_indexes... OK
Applying projects.0034_project_looking_for_people_note... OK
Applying projects.0035_project_blocked_code... OK
Applying projects.0036_project_transfer_token... OK
Applying projects.0037_auto_20160208_1751... OK
Applying projects.0038_auto_20160215_1133... OK
Applying projects.0039_auto_20160322_1157... OK
Applying projects.0040_remove_memberships_of_cancelled_users_acounts... OK
Applying projects.0043_auto_20160530_1004... OK
Applying projects.0044_auto_20160531_1150... OK
Applying projects.0041_auto_20160519_1058... OK
Applying projects.0042_auto_20160525_0911... OK
Applying projects.0045_merge... OK
Applying issues.0002_issue_external_reference... OK
Applying issues.0003_auto_20141210_1108... OK
Applying issues.0004_auto_20150114_0954... OK
Applying issues.0005_auto_20150623_1923... OK
Applying issues.0006_remove_issue_watchers... OK
Applying projects.0046_triggers_to_update_tags_colors...Traceback (most recent call last):
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
psycopg2.errors.UndefinedFunction: ERROR: функция array_cat(anyarray, anyarray) not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 17, in
execute_from_command_line(sys.argv)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/init.py", line 381, in execute_from_command_line
utility.execute()
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/init.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 234, in handle
fake_initial=fake_initial,
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/executor.py", line 245, in apply_migration
state = migration.apply(state, schema_editor)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/operations/special.py", line 105, in database_forwards
self._run_sql(schema_editor, self.sql)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/migrations/operations/special.py", line 130, in _run_sql
schema_editor.execute(statement, params=None)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/base/schema.py", line 137, in execute
cursor.execute(sql, params)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/raven/contrib/django/client.py", line 127, in execute
return real_execute(self, sql, params)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/utils.py", line 89, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/taiga/taiga-back/.venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
django.db.utils.ProgrammingError: ERROR: function array_cat(anyarray, anyarray) not exist

Postgresql 12, python3.7

[BUG] Cannot delete user in Django backend – permissions to delete outstanding token missing

When trying to delete a user in the Django backend, an error occurs:

grafik

Steps to reproduce

  • Create a new user in the Django admin interface.
  • Log in as the new user.
  • Create a new SCRUM project.
  • Try to delete the user in the Django backend.

The same issue in a different project was found here:
jazzband/djangorestframework-simplejwt#201

Environment

I am using taiga-docker on branch stable (last commit: bd87d40f3c22def83ea6a502d3f16797c2933b2e). No errors were found in the container logs or the developer console.

  • OS: Ubuntu 20.04.4 LTS
  • Browser: Firefox 100.0.2 (64 bit)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.