mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Merge branch 'master' into live
This commit is contained in:
commit
d6e242ac74
7 changed files with 84 additions and 65 deletions
|
@ -1,19 +1,28 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
Patches should be sent to the [aur-dev@lists.archlinux.org][1] mailing list.
|
Patches should be sent to the [aur-dev@lists.archlinux.org][1] mailing list
|
||||||
|
or included in a merge request on the [aurweb repository][2].
|
||||||
|
|
||||||
Before sending patches, you are recommended to run `flake8` and `isort`.
|
Before sending patches, you are recommended to run `flake8` and `isort`.
|
||||||
|
|
||||||
You can add a git hook to do this by installing `python-pre-commit` and running
|
You can add a git hook to do this by installing `python-pre-commit` and running
|
||||||
`pre-commit install`.
|
`pre-commit install`.
|
||||||
|
|
||||||
[1] https://lists.archlinux.org/listinfo/aur-dev
|
[1]: https://lists.archlinux.org/listinfo/aur-dev
|
||||||
|
[2]: https://gitlab.archlinunx.org/archlinux/aurweb
|
||||||
|
|
||||||
### Coding Guidelines
|
### Coding Guidelines
|
||||||
|
|
||||||
1. All source modified or added within a patchset **must** maintain equivalent
|
DISCLAIMER: We realise the code doesn't necessarily follow all the rules.
|
||||||
or increased coverage by providing tests that use the functionality.
|
This is an attempt to establish a standard coding style for future
|
||||||
|
development.
|
||||||
|
|
||||||
2. Please keep your source within an 80 column width.
|
1. All source modified or added within a patchset **must** maintain equivalent
|
||||||
|
or increased coverage by providing tests that use the functionality
|
||||||
|
2. Please keep your source within an 80 column width
|
||||||
|
3. Use four space indentation
|
||||||
|
4. Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)
|
||||||
|
5. DRY: Don't Repeat Yourself
|
||||||
|
6. All code should be tested for good _and_ bad cases
|
||||||
|
|
||||||
Test patches that increase coverage in the codebase are always welcome.
|
Test patches that increase coverage in the codebase are always welcome.
|
||||||
|
|
|
@ -6,7 +6,7 @@ from typing import Any
|
||||||
# Publicly visible version of aurweb. This is used to display
|
# Publicly visible version of aurweb. This is used to display
|
||||||
# aurweb versioning in the footer and must be maintained.
|
# aurweb versioning in the footer and must be maintained.
|
||||||
# Todo: Make this dynamic/automated.
|
# Todo: Make this dynamic/automated.
|
||||||
AURWEB_VERSION = "v6.0.19"
|
AURWEB_VERSION = "v6.0.21"
|
||||||
|
|
||||||
_parser = None
|
_parser = None
|
||||||
|
|
||||||
|
|
|
@ -220,7 +220,6 @@ async def trusted_user_proposal_post(request: Request, proposal: int,
|
||||||
|
|
||||||
with db.begin():
|
with db.begin():
|
||||||
vote = db.create(models.TUVote, User=request.user, VoteInfo=voteinfo)
|
vote = db.create(models.TUVote, User=request.user, VoteInfo=voteinfo)
|
||||||
voteinfo.ActiveTUs += 1
|
|
||||||
|
|
||||||
context["error"] = "You've already voted for this proposal."
|
context["error"] = "You've already voted for this proposal."
|
||||||
return render_proposal(request, context, proposal, voteinfo, voters, vote)
|
return render_proposal(request, context, proposal, voteinfo, voters, vote)
|
||||||
|
@ -275,8 +274,10 @@ async def trusted_user_addvote_post(request: Request,
|
||||||
context["error"] = "Username does not exist."
|
context["error"] = "Username does not exist."
|
||||||
return render_addvote(context, HTTPStatus.NOT_FOUND)
|
return render_addvote(context, HTTPStatus.NOT_FOUND)
|
||||||
|
|
||||||
|
utcnow = time.utcnow()
|
||||||
voteinfo = db.query(models.TUVoteInfo).filter(
|
voteinfo = db.query(models.TUVoteInfo).filter(
|
||||||
models.TUVoteInfo.User == user).count()
|
and_(models.TUVoteInfo.User == user,
|
||||||
|
models.TUVoteInfo.End > utcnow)).count()
|
||||||
if voteinfo:
|
if voteinfo:
|
||||||
_ = l10n.get_translator_for_request(request)
|
_ = l10n.get_translator_for_request(request)
|
||||||
context["error"] = _(
|
context["error"] = _(
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
Coding Guidelines
|
|
||||||
=================
|
|
||||||
|
|
||||||
DISCLAIMER: We realise the code doesn't necessarily follow all the rules.
|
|
||||||
This is an attempt to establish a standard coding style for future
|
|
||||||
development.
|
|
||||||
|
|
||||||
Coding style
|
|
||||||
------------
|
|
||||||
|
|
||||||
Column width: 79 columns or less within reason.
|
|
||||||
|
|
||||||
Indentation: tabs (standard eight column width)
|
|
||||||
Please don't add any mode lines. Adjust your editor to display tabs to your
|
|
||||||
preferred width. Generally code should work with the standard eight column
|
|
||||||
tabs.
|
|
||||||
|
|
||||||
No short open tags. '<?'
|
|
||||||
Do not end files with a close tag. '?>'
|
|
||||||
Try embedding as little XHTML in the PHP as possible.
|
|
||||||
Consider creating templates for XHTML.
|
|
||||||
|
|
||||||
All markup should conform to XHTML 1.0 Strict requirements.
|
|
||||||
You can use http://validator.w3.org to check the markup.
|
|
||||||
|
|
||||||
Prevent PHP Notices by using isset() or empty() in conditionals that
|
|
||||||
reference $_GET, $_POST, or $_REQUEST variables.
|
|
||||||
|
|
||||||
MySQL queries should generally go into functions.
|
|
||||||
|
|
||||||
Submitting patches
|
|
||||||
------------------
|
|
||||||
|
|
||||||
!!! PLEASE TEST YOUR PATCHES BEFORE SUBMITTING !!!
|
|
||||||
Submit uncompressed git-formatted patches to aur-dev@archlinux.org.
|
|
||||||
|
|
||||||
You will need to register on the mailing list before submitting:
|
|
||||||
https://mailman.archlinux.org/mailman/listinfo/aur-dev
|
|
||||||
|
|
||||||
Base your patches on the master branch as forward development is done there.
|
|
||||||
When writing patches please keep unnecessary changes to a minimum.
|
|
||||||
|
|
||||||
Try to keep your commits small and focused.
|
|
||||||
Smaller patches are much easier to review and have a better chance of being
|
|
||||||
pushed more quickly into the main repo. Smaller commits also makes reviewing
|
|
||||||
the commit history and tracking down specific changes much easier.
|
|
||||||
|
|
||||||
Try to make your commit messages brief but descriptive.
|
|
||||||
|
|
||||||
Glossary
|
|
||||||
--------
|
|
||||||
git-formatted patch:
|
|
||||||
A patch that is produced via `git format-patch` and is sent via
|
|
||||||
`git send-email` or as an inline attachment of an email.
|
|
65
docker/README.md
Normal file
65
docker/README.md
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
# Aurweb and Docker
|
||||||
|
|
||||||
|
The `INSTALL` document details a manual Aurweb setup, but Docker images are also
|
||||||
|
provided here to avoid the complications of database configuration (and so
|
||||||
|
forth).
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
Naturally, both `docker` and `docker-compose` must be installed, and your Docker
|
||||||
|
service must be started:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
systemctl start docker.service
|
||||||
|
```
|
||||||
|
|
||||||
|
The main image - `aurweb` - must be built manually:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Starting and Stopping the Services
|
||||||
|
|
||||||
|
With the above steps complete, you can bring up an initial cluster:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose up
|
||||||
|
```
|
||||||
|
|
||||||
|
Subsequent runs will be done with `start` instead of `up`. The cluster can be
|
||||||
|
stopped with `docker compose stop`.
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
With a running cluster, execute the following in a new terminal:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker compose run test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Generating Dummy Data
|
||||||
|
|
||||||
|
Before you can make meaningful queries to the cluster, it needs some data.
|
||||||
|
Luckily such data can be generated. First, `docker ps` to discover the ID of the
|
||||||
|
container running the FastAPI. Then:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker exec -it <id> /bin/bash
|
||||||
|
./scheme/gendummydata.py dummy.sql
|
||||||
|
mysql aurweb < dummy.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
The generation script may prompt you to install other Arch packages before it
|
||||||
|
can proceed.
|
||||||
|
|
||||||
|
### Querying the RPC
|
||||||
|
|
||||||
|
The Fast (Python) API runs on Port 8444, while the legacy PHP version runs
|
||||||
|
on 8443. You can query one like so:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -k "https://localhost:8444/rpc/?v=5&type=search&arg=python"
|
||||||
|
```
|
||||||
|
|
||||||
|
`-k` bypasses local certificate issues that `curl` will otherwise complain about.
|
|
@ -8,7 +8,7 @@
|
||||||
#
|
#
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "aurweb"
|
name = "aurweb"
|
||||||
version = "v6.0.19"
|
version = "v6.0.21"
|
||||||
license = "GPL-2.0-only"
|
license = "GPL-2.0-only"
|
||||||
description = "Source code for the Arch User Repository's website"
|
description = "Source code for the Arch User Repository's website"
|
||||||
homepage = "https://aur.archlinux.org"
|
homepage = "https://aur.archlinux.org"
|
||||||
|
|
|
@ -650,7 +650,6 @@ def test_tu_proposal_vote(client, proposal):
|
||||||
|
|
||||||
# Store the current related values.
|
# Store the current related values.
|
||||||
yes = voteinfo.Yes
|
yes = voteinfo.Yes
|
||||||
active_tus = voteinfo.ActiveTUs
|
|
||||||
|
|
||||||
cookies = {"AURSID": tu_user.login(Request(), "testPassword")}
|
cookies = {"AURSID": tu_user.login(Request(), "testPassword")}
|
||||||
with client as request:
|
with client as request:
|
||||||
|
@ -661,7 +660,6 @@ def test_tu_proposal_vote(client, proposal):
|
||||||
|
|
||||||
# Check that the proposal record got updated.
|
# Check that the proposal record got updated.
|
||||||
assert voteinfo.Yes == yes + 1
|
assert voteinfo.Yes == yes + 1
|
||||||
assert voteinfo.ActiveTUs == active_tus + 1
|
|
||||||
|
|
||||||
# Check that the new TUVote exists.
|
# Check that the new TUVote exists.
|
||||||
vote = db.query(TUVote, TUVote.VoteInfo == voteinfo,
|
vote = db.query(TUVote, TUVote.VoteInfo == voteinfo,
|
||||||
|
|
Loading…
Add table
Reference in a new issue