Skip to content

Commit 5009316

Browse files
authored
Merge branch 'master' into dependabot/pip/django-import-export-approx-eq-4.3.9
2 parents f252a45 + 5d25d8a commit 5009316

File tree

38 files changed

+881
-528
lines changed

38 files changed

+881
-528
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# These are supported funding model platforms
2-
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
2+
github: [openwisp]
33
patreon: # Replace with a single Patreon username
44
open_collective: # Replace with a single Open Collective username
55
ko_fi: # Replace with a single Ko-fi username

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ name: Bug report
33
about: Open a bug report
44
title: "[bug] "
55
labels: bug
6-
assignees: ''
7-
6+
assignees: ""
87
---
98

109
**Describe the bug**
1110
A clear and concise description of the bug or unexpected behavior.
1211

1312
**Steps To Reproduce**
1413
Steps to reproduce the behavior:
14+
1515
1. Go to '...'
1616
2. Click on '....'
1717
3. Scroll down to '....'
@@ -24,7 +24,8 @@ A clear and concise description of what you expected to happen.
2424
If applicable, add screenshots to help explain your problem.
2525

2626
**System Informatioon:**
27-
- OS: [e.g. Ubuntu 24.04 LTS]
28-
- Python Version: [e.g. Python 3.11.2]
29-
- Django Version: [e.g. Django 4.2.5]
30-
- Browser and Browser Version (if applicable): [e.g. Chromium v126.0.6478.126]
27+
28+
- OS: [e.g. Ubuntu 24.04 LTS]
29+
- Python Version: [e.g. Python 3.11.2]
30+
- Django Version: [e.g. Django 4.2.5]
31+
- Browser and Browser Version (if applicable): [e.g. Chromium v126.0.6478.126]

.github/ISSUE_TEMPLATE/feature_request.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ name: Feature request
33
about: Suggest an idea for this project
44
title: "[feature] "
55
labels: enhancement
6-
assignees: ''
7-
6+
assignees: ""
87
---
98

109
**Is your feature request related to a problem? Please describe.**

.github/ISSUE_TEMPLATE/question.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ name: Question
33
about: Please use the Discussion Forum to ask questions
44
title: "[question] "
55
labels: question
6-
assignees: ''
7-
6+
assignees: ""
87
---
98

109
Please use the [Discussion Forum](https://github.com/orgs/openwisp/discussions) to ask questions.

.github/workflows/ci.yml

Lines changed: 61 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
32
name: OpenWISP Controller CI Build
43

54
on:
@@ -42,76 +41,76 @@ jobs:
4241
django-version: django~=4.2.0
4342

4443
steps:
45-
- uses: actions/checkout@v4
46-
with:
47-
ref: ${{ github.event.pull_request.head.sha }}
44+
- uses: actions/checkout@v4
45+
with:
46+
ref: ${{ github.event.pull_request.head.sha }}
4847

49-
- name: Cache APT packages
50-
uses: actions/cache@v4
51-
with:
52-
path: /var/cache/apt/archives
53-
key: apt-${{ runner.os }}-${{ hashFiles('.github/workflows/ci.yml') }}
54-
restore-keys: |
55-
apt-${{ runner.os }}-
48+
- name: Cache APT packages
49+
uses: actions/cache@v4
50+
with:
51+
path: /var/cache/apt/archives
52+
key: apt-${{ runner.os }}-${{ hashFiles('.github/workflows/ci.yml') }}
53+
restore-keys: |
54+
apt-${{ runner.os }}-
5655
57-
- name: Disable man page auto-update
58-
run: |
59-
echo 'set man-db/auto-update false' | sudo debconf-communicate >/dev/null
60-
sudo dpkg-reconfigure man-db
56+
- name: Disable man page auto-update
57+
run: |
58+
echo 'set man-db/auto-update false' | sudo debconf-communicate >/dev/null
59+
sudo dpkg-reconfigure man-db
6160
62-
- name: Set up Python ${{ matrix.python-version }}
63-
uses: actions/setup-python@v5
64-
with:
65-
python-version: ${{ matrix.python-version }}
66-
cache: 'pip'
67-
cache-dependency-path: |
68-
**/requirements*.txt
61+
- name: Set up Python ${{ matrix.python-version }}
62+
uses: actions/setup-python@v5
63+
with:
64+
python-version: ${{ matrix.python-version }}
65+
cache: "pip"
66+
cache-dependency-path: |
67+
**/requirements*.txt
6968
70-
- name: Install Dependencies
71-
id: deps
72-
run: |
73-
sudo apt update
74-
sudo apt -qq -y install sqlite3 gdal-bin libproj-dev \
75-
libgeos-dev libspatialite-dev spatialite-bin \
76-
libsqlite3-mod-spatialite
77-
sudo npm install -g prettier
78-
pip install -U pip wheel setuptools
79-
pip install -U -r requirements-test.txt
80-
pip install -U -e .
81-
pip install ${{ matrix.django-version }}
69+
- name: Install Dependencies
70+
id: deps
71+
run: |
72+
sudo apt update
73+
sudo apt -qq -y install sqlite3 gdal-bin libproj-dev \
74+
libgeos-dev libspatialite-dev spatialite-bin \
75+
libsqlite3-mod-spatialite
76+
sudo npm install -g prettier
77+
pip install -U pip wheel setuptools
78+
pip install -U -r requirements-test.txt
79+
pip install -U -e .
80+
pip install ${{ matrix.django-version }}
8281
83-
- name: Start postgres and redis
84-
if: ${{ !cancelled() && steps.deps.conclusion == 'success' }}
85-
run: docker compose up -d postgres redis
82+
- name: Start postgres and redis
83+
if: ${{ !cancelled() && steps.deps.conclusion == 'success' }}
84+
run: docker compose up -d postgres redis
8685

87-
- name: QA checks
88-
run: ./run-qa-checks
86+
- name: QA checks
87+
run: ./run-qa-checks
8988

90-
- name: Tests
91-
if: ${{ !cancelled() && steps.deps.conclusion == 'success' }}
92-
run: |
93-
coverage run runtests.py --parallel || coverage run ./runtests.py
94-
# tests the extension capability
95-
SAMPLE_APP=1 coverage run ./runtests.py --parallel --keepdb --exclude-tag=selenium_tests \
96-
|| SAMPLE_APP=1 coverage run ./runtests.py --keepdb --exclude-tag=selenium_tests
97-
coverage combine
98-
coverage xml
99-
env:
100-
SELENIUM_HEADLESS: 1
101-
GECKO_LOG: 1
89+
- name: Tests
90+
if: ${{ !cancelled() && steps.deps.conclusion == 'success' }}
91+
run: |
92+
coverage run runtests.py --parallel || coverage run ./runtests.py
93+
# tests the extension capability
94+
SAMPLE_APP=1 coverage run ./runtests.py --parallel --keepdb --exclude-tag=selenium_tests \
95+
|| SAMPLE_APP=1 coverage run ./runtests.py --keepdb --exclude-tag=selenium_tests
96+
coverage combine
97+
coverage xml
98+
env:
99+
SELENIUM_HEADLESS: 1
100+
GECKO_LOG: 1
102101

103-
- name: Show gecko web driver log on failures
104-
if: ${{ failure() }}
105-
run: cat geckodriver.log
102+
- name: Show gecko web driver log on failures
103+
if: ${{ failure() }}
104+
run: cat geckodriver.log
106105

107-
- name: Upload Coverage
108-
if: ${{ success() }}
109-
uses: coverallsapp/github-action@v2
110-
with:
111-
parallel: true
112-
format: cobertura
113-
flag-name: python-${{ matrix.env.env }}
114-
github-token: ${{ secrets.GITHUB_TOKEN }}
106+
- name: Upload Coverage
107+
if: ${{ success() }}
108+
uses: coverallsapp/github-action@v2
109+
with:
110+
parallel: true
111+
format: cobertura
112+
flag-name: python-${{ matrix.env.env }}
113+
github-token: ${{ secrets.GITHUB_TOKEN }}
115114

116115
coveralls:
117116
needs: build
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: publiccode.yml validation
2+
3+
on: [pull_request, push]
4+
5+
jobs:
6+
publiccode_yml_validation:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v4
10+
- uses: italia/publiccode-parser-action@v1
11+
with:
12+
publiccode: "publiccode.yml"

.github/workflows/pypi.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ jobs:
1717
permissions:
1818
id-token: write
1919
steps:
20-
- uses: actions/checkout@v4
21-
- name: Set up Python
22-
uses: actions/setup-python@v5
23-
with:
24-
python-version: '3.10'
25-
- name: Install dependencies
26-
run: |
27-
pip install -U pip
28-
pip install build
29-
- name: Build package
30-
run: python -m build
31-
- name: Publish package distributions to PyPI
32-
uses: pypa/gh-action-pypi-publish@v1.12.4
20+
- uses: actions/checkout@v4
21+
- name: Set up Python
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.10"
25+
- name: Install dependencies
26+
run: |
27+
pip install -U pip
28+
pip install build
29+
- name: Build package
30+
run: python -m build
31+
- name: Publish package distributions to PyPI
32+
uses: pypa/gh-action-pypi-publish@v1.13.0

CHANGES.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,41 @@ Version 1.2.0 [Unreleased]
66

77
Work in progress.
88

9+
Version 1.1.2 [2025-08-01]
10+
--------------------------
11+
12+
Bugfixes
13+
~~~~~~~~
14+
15+
- Fixed `compatibility of OpenWrt.update_config with openwisp-config >=
16+
1.1.0 <https://github.com/openwisp/openwisp-controller/issues/964>`__.
17+
- Fixed `VPN-client template switch issue when switching between VPN
18+
servers with the same address
19+
<https://github.com/openwisp/openwisp-controller/issues/973>`__.
20+
- Fixed `missing config_changed signal when reverting a template
21+
<https://github.com/openwisp/openwisp-controller/issues/836>`__.
22+
- Fixed `Zerotier network name being set to "ow_zt" instead of "global"
23+
<https://github.com/openwisp/openwisp-controller/issues/982>`__.
24+
- Fixed error in preview when device has no name set.
25+
- Fixed live updates for "Send commands" when multiple websocket
26+
connections are open for the same device.
27+
- Limited command results in the device admin to 30 entries to avoid
28+
loading issues.
29+
- Fixed uncaught exception in ``leaflet.draw.i18n.js``.
30+
- Fixed `handling of devices without a DeviceConnection when creating
31+
commands
32+
<https://github.com/openwisp/openwisp-controller/issues/1016>`__.
33+
- Prevented `adding multiple VPN client templates pointing to the same VPN
34+
server <https://github.com/openwisp/openwisp-controller/issues/832>`__.
35+
- Fixed timeout issues in VPN checksum and download configuration views
36+
for large VPN setups (e.g., 2000+ WireGuard peers) by caching the
37+
checksum and generated configuration.
38+
- Fixed an issue where enforcing required templates was accidentally
39+
deleting `VpnClient` objects, causing them to be recreated whenever
40+
device templates were modified in the Django admin.
41+
- Fixed ``HTTP 500 Server Error`` when geographic REST API endpoints
42+
receive a malformed resource ID.
43+
944
Version 1.1.1 [2025-01-31]
1045
--------------------------
1146

docs/user/settings.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,8 @@ separately.
552552
Allows to specify a ``list`` of tuples for adding commands as described in
553553
the section: :ref:`defining_new_menu_options`.
554554

555+
.. _openwisp_controller_organization_enabled_commands:
556+
555557
``OPENWISP_CONTROLLER_ORGANIZATION_ENABLED_COMMANDS``
556558
-----------------------------------------------------
557559

docs/user/shell-commands.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ shell commands, you can add new commands by following instructions in the
3838

3939
.. note::
4040

41-
You can also use the `REST API <controller_execute_command_api>`_ to
42-
execute commands on a device.
41+
You can also use the :ref:`REST API <controller_execute_command_api>`
42+
to execute commands on a device.
4343

4444
.. note::
4545

0 commit comments

Comments
 (0)