Compare commits

..
1 Commits
Author SHA1 Message Date
retoor ba66c10ee3 Initial commit 2024-12-14 12:18:25 +00:00
10 changed files with 1 additions and 173 deletions
-24
View File
@@ -1,24 +0,0 @@
name: devranta build
run-name: devranta async devRant api client build and test
on: [push]
jobs:
Build:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Pull repo
run: git pull
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- name: Ensure environment
run: make ensure_env
- name: Install package
run: make install
- name: Build new package
run: make build
- name: Test application
run: make test
-5
View File
@@ -1,9 +1,4 @@
# ---> Python
.vscode
.history
form.db*
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
-32
View File
@@ -1,32 +0,0 @@
PYTHON=./.venv/bin/python
PIP=./.venv/bin/pip
BIN=./.venv/bin
ENV=./.venv/bin/activate
APP=form
all: ensure_env format install build test
ensure_env:
-@python3 -m venv .venv
install:
$(PIP) install -e .
format:
$(PIP) install shed
. $(ENV) && shed
build:
$(PIP) install build
$(PYTHON) -m build .
test:
$(PYTHON) -m unittest $(APP).tests
run:
$(BIN)/$(APP).serve
+1 -29
View File
@@ -1,31 +1,3 @@
# form
Rest form generator / validator with CSRF support
## Usage
```
async with aiohttp.ClientSession():
response = await aiohttp.post("[base_url]/create/",data=dict(
firstname=dict(
type="string",
max_length=20,
min_length=2,
required=True,
default=""
),
age=dict(
type="number",
min_value=16,
max_value=99,
required=False,
default=22
),
captcha=dict(
type="captcha",
width=100,
height=40
)
))
form = await response.json()
# form is now exactly your payload with an extra field called csrf.
```
Rest form generator / validator with CSRF support
-3
View File
@@ -1,3 +0,0 @@
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
-26
View File
@@ -1,26 +0,0 @@
[metadata]
name = form
version = 1.0.0
description = REST Form builder and validator.
author = retoor
author_email = retoor@molodetz.nl
license = MIT
long_description = file: README.md
long_description_content_type = text/markdown
[options]
packages = find:
package_dir =
= src
python_requires = >=3.7
install_requires =
requests
app @ git+https://retoor.molodetz.nl/retoor/app
captcha
[options.packages.find]
where = src
[options.entry_points]
console_scripts =
form.serve = form.__main__:main
View File
-13
View File
@@ -1,13 +0,0 @@
from app.app import argument_parser
from form.app import Application
def main():
args = argument_parser.parse_args()
app = Application(db_path="sqlite:///form.db", db_web=args.db_web)
app.run(host=args.host, port=args.port)
if __name__ == "__main__":
main()
-27
View File
@@ -1,27 +0,0 @@
from app.app import Application as BaseApplication
from aiohttp import web
class Application(BaseApplication):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.router.add_get("/", self.index_handler)
@property
def forms_created(self):
return int(self.sget("forms_created", 0))
@forms_created.setter
def forms_created(self, value):
self.sset("forms_created", int(value))
async def index_handler(self,request):
self.forms_created += 1
print(self.forms_created)
return web.json_response(
{"message": "Nothing to see here", "error": "404"}, status=404
)
-14
View File
@@ -1,14 +0,0 @@
import unittest
class AppTestCase(unittest.IsolatedAsyncioTestCase):
async def asyncSetup(self):
print("Async setup")
async def test_init(self):
self.assertTrue(True)
if __name__ == "__main__":
unittest.main()