Verified Commit d6e242ac authored by Kevin Morris's avatar Kevin Morris
Browse files

Merge branch 'master' into live

parents beeee19b f11e8de2
# 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`.
You can add a git hook to do this by installing `python-pre-commit` and running
`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
1. All source modified or added within a patchset **must** maintain equivalent
or increased coverage by providing tests that use the functionality.
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.
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.
......@@ -6,7 +6,7 @@ from typing import Any
# Publicly visible version of aurweb. This is used to display
# aurweb versioning in the footer and must be maintained.
# Todo: Make this dynamic/automated.
AURWEB_VERSION = "v6.0.19"
AURWEB_VERSION = "v6.0.21"
_parser = None
......
......@@ -220,7 +220,6 @@ async def trusted_user_proposal_post(request: Request, proposal: int,
with db.begin():
vote = db.create(models.TUVote, User=request.user, VoteInfo=voteinfo)
voteinfo.ActiveTUs += 1
context["error"] = "You've already voted for this proposal."
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."
return render_addvote(context, HTTPStatus.NOT_FOUND)
utcnow = time.utcnow()
voteinfo = db.query(models.TUVoteInfo).filter(
models.TUVoteInfo.User == user).count()
and_(models.TUVoteInfo.User == user,
models.TUVoteInfo.End > utcnow)).count()
if voteinfo:
_ = l10n.get_translator_for_request(request)
context["error"] = _(
......
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.
# 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]
name = "aurweb"
version = "v6.0.19"
version = "v6.0.21"
license = "GPL-2.0-only"
description = "Source code for the Arch User Repository's website"
homepage = "https://aur.archlinux.org"
......
......@@ -650,7 +650,6 @@ def test_tu_proposal_vote(client, proposal):
# Store the current related values.
yes = voteinfo.Yes
active_tus = voteinfo.ActiveTUs
cookies = {"AURSID": tu_user.login(Request(), "testPassword")}
with client as request:
......@@ -661,7 +660,6 @@ def test_tu_proposal_vote(client, proposal):
# Check that the proposal record got updated.
assert voteinfo.Yes == yes + 1
assert voteinfo.ActiveTUs == active_tus + 1
# Check that the new TUVote exists.
vote = db.query(TUVote, TUVote.VoteInfo == voteinfo,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment