Merge branch 'master' into dashboard-fix
This commit is contained in:
commit
6d03cd7ade
|
|
@ -1,79 +0,0 @@
|
|||
trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- stable
|
||||
- refs/tags/*
|
||||
paths:
|
||||
include:
|
||||
- src/backend
|
||||
|
||||
pool:
|
||||
vmImage: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
Python39:
|
||||
PYTHON_VERSION: 3.12
|
||||
maxParallel: 3
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '$(PYTHON_VERSION)'
|
||||
architecture: 'x64'
|
||||
|
||||
- task: PythonScript@0
|
||||
displayName: 'Export project path'
|
||||
inputs:
|
||||
scriptSource: 'inline'
|
||||
script: |
|
||||
"""Search all subdirectories for `manage.py`."""
|
||||
from glob import iglob
|
||||
from os import path
|
||||
# Python >= 3.5
|
||||
manage_py = next(iglob(path.join('**', 'manage.py'), recursive=True), None)
|
||||
if not manage_py:
|
||||
raise SystemExit('Could not find a Django project')
|
||||
project_location = path.dirname(path.abspath(manage_py))
|
||||
print('Found Django project in', project_location)
|
||||
print('##vso[task.setvariable variable=projectRoot]{}'.format(project_location))
|
||||
|
||||
- script: |
|
||||
python -m pip install --upgrade pip setuptools wheel uv
|
||||
uv pip install --require-hashes -r src/backend/requirements.txt
|
||||
uv pip install --require-hashes -r src/backend/requirements-dev.txt
|
||||
sudo apt-get install poppler-utils
|
||||
sudo apt-get install libpoppler-dev
|
||||
uv pip install unittest-xml-reporting coverage invoke
|
||||
displayName: 'Install prerequisites'
|
||||
env:
|
||||
UV_SYSTEM_PYTHON: 1
|
||||
|
||||
- script: |
|
||||
pushd '$(projectRoot)'
|
||||
invoke update --uv
|
||||
coverage run manage.py test --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner --no-input
|
||||
coverage xml -i
|
||||
displayName: 'Run tests'
|
||||
env:
|
||||
INVENTREE_DB_ENGINE: sqlite3
|
||||
INVENTREE_DB_NAME: inventree
|
||||
INVENTREE_MEDIA_ROOT: ./media
|
||||
INVENTREE_STATIC_ROOT: ./static
|
||||
INVENTREE_BACKUP_DIR: ./backup
|
||||
INVENTREE_SITE_URL: http://localhost:8000
|
||||
INVENTREE_PLUGINS_ENABLED: true
|
||||
UV_SYSTEM_PYTHON: 1
|
||||
INVENTREE_DEBUG: true
|
||||
INVENTREE_LOG_LEVEL: INFO
|
||||
|
||||
- task: PublishTestResults@2
|
||||
inputs:
|
||||
testResultsFiles: "**/TEST-*.xml"
|
||||
testRunTitle: 'Python $(PYTHON_VERSION)'
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- task: PublishCodeCoverageResults@2
|
||||
inputs:
|
||||
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
|
||||
|
|
@ -23,7 +23,6 @@ The InvenTree project is split into two main components: frontend and backend. T
|
|||
|
||||
```
|
||||
InvenTree/
|
||||
├─ .devops/ # Files for Azure DevOps
|
||||
├─ .github/ # Files for GitHub
|
||||
│ ├─ actions/ # Reused actions
|
||||
│ ├─ ISSUE_TEMPLATE/ # Templates for issues and pull requests
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
[](https://inventree.readthedocs.io/en/latest/?badge=latest)
|
||||

|
||||
[](https://app.netlify.com/sites/inventree/deploys)
|
||||
[](https://dev.azure.com/InvenTree/InvenTree%20test%20statistics/_build/latest?definitionId=3&branchName=testing)
|
||||
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/7179)
|
||||
[](https://securityscorecards.dev/viewer/?uri=github.com/inventree/InvenTree)
|
||||
|
|
@ -202,6 +201,7 @@ Find a full list of used third-party libraries in the license information dialog
|
|||
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-bg.svg" alt="Deploys by Netlify" /> </a>
|
||||
<a href="https://crowdin.com"> <img src="https://crowdin.com/images/crowdin-logo.svg" alt="Translation by Crowdin" /> </a> <br>
|
||||
<a href="https://codspeed.io/inventree/InvenTree?utm_source=badge"><img src="https://img.shields.io/endpoint?url=https://codspeed.io/badge.json" alt="CodSpeed Badge"/></a>
|
||||
<a href="https://flakiness.io/InvenTree/InvenTree"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fflakiness.io%2Fapi%2Fbadge%3Finput%3D%257B%2522badgeToken%2522%253A%2522badge-35mqq5Ht4uL3vGF8lR9P2D%2522%257D" alt="Flakiness Badge"/></a>
|
||||
</p>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ Individuals and companies can also support via [GitHub sponsors](https://github.
|
|||
- [Codecov](https://codecov.io) - Code coverage as a service, used to track the code coverage of the various components
|
||||
- [Netlify](https://www.netlify.com/) - Static site hosting provider, used to test deploy the frontend and website
|
||||
- [Depot](https://depot.dev/?utm_source=inventree) - Docker build accelerator, used to build the multi-arch images for the InvenTree docker image
|
||||
- [CodSpeed](https://codspeed.io/) - Performance testing platform, used to track the performance of a few performance benchmarks
|
||||
- [Flakiness](https://flakiness.io/) - Frontend test flakiness detection, used to track the flakiness of the various test harnesses
|
||||
|
||||
## Past Supporters
|
||||
|
||||
|
|
|
|||
|
|
@ -31,9 +31,6 @@
|
|||
},
|
||||
{
|
||||
"pattern": "https://opensource.org/license/MIT"
|
||||
},
|
||||
{
|
||||
"pattern": "^https://dev.azure.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ export function StockColumn(props: StockColumnProps): TableColumn {
|
|||
text = `# ${stock_item.serial}`;
|
||||
}
|
||||
|
||||
if (record.is_building) {
|
||||
if (stock_item.is_building) {
|
||||
color = 'blue';
|
||||
extra.push(
|
||||
<Text
|
||||
|
|
@ -164,35 +164,35 @@ export function StockColumn(props: StockColumnProps): TableColumn {
|
|||
size='sm'
|
||||
>{t`This stock item is in production`}</Text>
|
||||
);
|
||||
} else if (record.sales_order) {
|
||||
} else if (stock_item.sales_order) {
|
||||
extra.push(
|
||||
<Text
|
||||
key='sales-order'
|
||||
size='sm'
|
||||
>{t`This stock item has been assigned to a sales order`}</Text>
|
||||
);
|
||||
} else if (record.customer) {
|
||||
} else if (stock_item.customer) {
|
||||
extra.push(
|
||||
<Text
|
||||
key='customer'
|
||||
size='sm'
|
||||
>{t`This stock item has been assigned to a customer`}</Text>
|
||||
);
|
||||
} else if (record.belongs_to) {
|
||||
} else if (stock_item.belongs_to) {
|
||||
extra.push(
|
||||
<Text
|
||||
key='belongs-to'
|
||||
size='sm'
|
||||
>{t`This stock item is installed in another stock item`}</Text>
|
||||
);
|
||||
} else if (record.consumed_by) {
|
||||
} else if (stock_item.consumed_by) {
|
||||
extra.push(
|
||||
<Text
|
||||
key='consumed-by'
|
||||
size='sm'
|
||||
>{t`This stock item has been consumed by a build order`}</Text>
|
||||
);
|
||||
} else if (!record.in_stock) {
|
||||
} else if (!stock_item.in_stock) {
|
||||
extra.push(
|
||||
<Text
|
||||
key='unavailable'
|
||||
|
|
@ -201,17 +201,17 @@ export function StockColumn(props: StockColumnProps): TableColumn {
|
|||
);
|
||||
}
|
||||
|
||||
if (record.expired) {
|
||||
if (stock_item.expired) {
|
||||
extra.push(
|
||||
<Text key='expired' size='sm'>{t`This stock item has expired`}</Text>
|
||||
);
|
||||
} else if (record.stale) {
|
||||
} else if (stock_item.stale) {
|
||||
extra.push(
|
||||
<Text key='stale' size='sm'>{t`This stock item is stale`}</Text>
|
||||
);
|
||||
}
|
||||
|
||||
if (record.in_stock) {
|
||||
if (stock_item.in_stock) {
|
||||
if (allocated > 0) {
|
||||
if (allocated > quantity) {
|
||||
color = 'red';
|
||||
|
|
@ -267,7 +267,7 @@ export function StockColumn(props: StockColumnProps): TableColumn {
|
|||
}
|
||||
}
|
||||
|
||||
if (!record.in_stock) {
|
||||
if (!stock_item.in_stock) {
|
||||
color = 'red';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ export function TableHoverCard({
|
|||
zIndex={zIndex}
|
||||
>
|
||||
<HoverCard.Target>
|
||||
<Group gap='xs' justify='space-between'>
|
||||
<Group gap='xs' justify='space-between' wrap='nowrap'>
|
||||
{value}
|
||||
<InvenTreeIcon
|
||||
icon={icon ?? 'info'}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ function stockItemTableColumns({
|
|||
'allocated',
|
||||
'consumed',
|
||||
'installed',
|
||||
'in_stock',
|
||||
'sent_to_customer'
|
||||
]
|
||||
}),
|
||||
|
|
|
|||
Loading…
Reference in New Issue