Compare commits

..

1 Commits
ci ... master

Author SHA1 Message Date
hecfernandez 120442206b fix tags exclude filter behaviour (#1246)
* fix tags exclude filter behaviour
2019-02-13 14:20:04 +01:00
7 changed files with 19 additions and 80 deletions

View File

@ -1,12 +0,0 @@
FROM fedora:28
RUN useradd -M -l -u 3000018 jenkins
RUN dnf install -y \
gcc \
git \
libjpeg-devel \
openssh-clients \
python3-devel \
rsync \
zlib-devel \
--

34
ci/Jenkinsfile vendored
View File

@ -1,34 +0,0 @@
pipeline {
agent {
dockerfile {
dir 'ci'
args '-v /etc/ssh/ssh_known_hosts:/etc/ssh/ssh_known_hosts:ro'
}
}
triggers {
pollSCM ''
}
environment {
PUBLISH_HOST = 'file0.pyrocufflink.blue'
XDG_CACHE_HOME = "${WORKSPACE}"
}
stages {
stage('Build') {
steps {
sh '. ci/build.sh'
}
}
stage('Publish') {
steps {
sshagent(['jenkins-sftp']) {
sh '. ci/publish.sh'
}
}
}
}
}

View File

@ -1,8 +0,0 @@
rm -rf .venv
python3.6 -m venv .venv
rm -rf dist
.venv/bin/pip install --upgrade pip setuptools wheel
.venv/bin/pip wheel -w dist -r requirements.txt .
sed -i '/^-i/d' requirements.txt

View File

@ -1,9 +0,0 @@
: ${PUBLISH_PATH:=/var/lib/wheels/taiga}
rsync -rtiO \
--delete \
--include '*.whl' \
--include requirements.txt \
dist/ \
requirements.txt \
${PUBLISH_HOST}:${PUBLISH_PATH%/}/

View File

@ -1,15 +0,0 @@
from setuptools import find_packages, setup
setup(
name='taiga-back',
use_scm_version=True,
description='taiga-back',
url='https://taiga.io/',
license='GPL-3',
packages=find_packages(
exclude=['tests', 'tests.*'],
),
setup_requires=[
'setuptools_scm',
],
)

View File

@ -515,8 +515,13 @@ class TagsFilter(FilterBackend):
def _prepare_filter_query(self, query):
return Q(tags__contains=query)
def _prepare_exclude_query(self, query):
return ~Q(tags__contains=query)
def _prepare_exclude_query(self, tags):
queries = [Q(tags__contains=[tag]) for tag in tags]
query = queries.pop()
for item in queries:
query |= item
return ~Q(query)
def filter_queryset(self, request, queryset, view):
operations = {

View File

@ -476,6 +476,18 @@ def test_api_filters(client, filter_name, collection, expected, exclude_expected
assert len(response.data) == exclude_expected
def test_mulitple_exclude_filter_tags(client):
data = create_filter_issues_context()
project = data["project"]
client.login(data["users"][0])
tags = data["tags"]
url = "{}?project={}&exclude_tags={},{}".format(reverse('issues-list'), project.id, tags[1], tags[2])
response = client.get(url)
assert response.status_code == 200
assert len(response.data) == 4
def test_api_filters_data(client):
data = create_filter_issues_context()
project = data["project"]