Předělání requirements na pyproject

This commit is contained in:
Jonas Havelka 2025-12-16 20:17:07 +01:00
parent 51cb82a9ea
commit 3aa533b452
6 changed files with 1321 additions and 55 deletions

1
.python-version Normal file
View file

@ -0,0 +1 @@
3.11

View file

@ -1 +0,0 @@
# TODO

61
pyproject.toml Normal file
View file

@ -0,0 +1,61 @@
[project]
name = "mamweb"
version = "3.0.0"
description = "Web pro seminář M&M"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"setuptools", # django-polymorphic má rozbité dependencies
# basic libs
"psycopg2", # PostgreSQL adaptér
"ipython", # Interaktivní shell
"Unidecode", # Přepisuje unicode do ASCII (např. soubory nebo e-maily)
"Pillow",
"pilkit>=3.0", # Kvůli kompatibilitě s Pillow>=10.0.0
# Django and modules
"Django<5.0",
"django-reversion", # Version control na datech v databázi
"django-countries", # Políčko ve formu / field v modelu ohledně států
"django-solo", # Singleton model (speciálně Nastavení)
"django-ckeditor-5", # Editor htmlka (hlavně v adminu u flatpages)
"django-cleanup", # Uklízí media/ od smazaných „databázových“ souborů
"django-taggit", # Taggy v djangu (speciálně zaměření problémů)
"django-autocomplete-light>=3.9.0,<3.12.0", # Automatické doplňování (problémů, účastníků, …) ve formulářích
"django-imagekit", # Všechny možné obrázky v Djangu
"django-polymorphic", # Polymorfismus na django modelech (hlavně Problém nebo treenode)
"django-sitetree", # Struktura stránek, hlavně pro meníčko
"django_reverse_admin", # Lepší handlování OneToOne fieldů v adminu
"django-rest-framework",
"django-webpack-loader",
"django-rest-polymorphic",
"django-colorfield", # Field pro ukládání barvy (např. tagy v korekturovátku)
]
[dependency-groups]
dev = [
# Potřeba pro test data
"lorem",
# debug tools/extensions
"django-debug-toolbar",
"django-extensions",
"sqlparse",
"Werkzeug",
# Stahování škol v testech
"requests",
]
# pro dokumentaci
doc = [
"myst-parser",
"sphinx",
"sphinx-rtd-theme",
"sphinxcontrib-django",
]

View file

@ -1,54 +0,0 @@
-c constraints.txt
setuptools # django-polymorphic má rozbité dependencies
# basic libs
psycopg2 # PostgreSQL adaptér
ipython # Interaktivní shell
Unidecode # Přepisuje unicode do ASCII (např. soubory nebo e-maily)
Pillow
pilkit>=3.0 # Kvůli kompatibilitě s Pillow>=10.0.0
# Django and modules
Django<5.0
django-reversion # Version control na datech v databázi
django-countries # Políčko ve formu / field v modelu ohledně států
django-solo # Singleton model (speciálně Nastavení)
django-ckeditor-5 # Editor htmlka (hlavně v adminu u flatpages)
django-cleanup # Uklízí media/ od smazaných „databázových“ souborů
django-taggit # Taggy v djangu (speciálně zaměření problémů)
django-autocomplete-light>=3.9.0,<3.12.0 # Automatické doplňování (problémů, účastníků, …) ve formulářích
django-imagekit # Všechny možné obrázky v Djangu
django-polymorphic # Polymorfismus na django modelech (hlavně Problém nebo treenode)
django-sitetree # Struktura stránek, hlavně pro meníčko
django_reverse_admin # Lepší handlování OneToOne fieldů v adminu
django-rest-framework
django-webpack-loader
django-rest-polymorphic
django-colorfield # Field pro ukládání barvy (např. tagy v korekturovátku)
# debug tools/extensions
django-debug-toolbar
django-extensions
sqlparse
Werkzeug
# G+, FB authorisation
# django-allauth
# oauthlib
# python-openid
requests
# requests-oauthlib
# Potřeba pro test data
lorem
# pro dokumentaci
sphinx
sphinx_rtd_theme
sphinxcontrib-django
myst_parser

48
tests.py Normal file
View file

@ -0,0 +1,48 @@
from django.test import TestCase
import seminar.models as m
from vysledkovky.utils import VysledkovkaRocniku, VysledkovkaCisla
from .testutils import create_resitel
class VysledkovkaCislaTestCase(TestCase):
@classmethod
def setUpTestData(cls):
cls.rocnik1 = m.Rocnik.objects.create(prvni_rok=1, rocnik=1)
cls.rocnik25 = m.Rocnik.objects.create(prvni_rok=25, rocnik=25)
cls.rocnik26 = m.Rocnik.objects.create(prvni_rok=21, rocnik=26)
cls.cisla1 = [
m.Cislo.objects.create(rocnik=cls.rocnik1, poradi=i,)
for i in range(5)
]
m.Deadline.objects.create(cislo=cls.cisla1[0], verejna_vysledkovka=True)
m.Deadline.objects.create(cislo=cls.cisla1[0], verejna_vysledkovka=True)
cls.resitele = [create_resitel() for _ in range(10)]
cls.tema = m.Tema.objects.create(
rocnik=cls.rocnik1,
stav=m.Problem.STAV_ZADANY,
)
cls.uloha_tematu = m.Uloha.objects.create(
nadproblem=cls.tema,
stav=m.Problem.STAV_ZADANY,
)
cls.uloha = m.Uloha.objects.create(
stav=m.Problem.STAV_ZADANY,
)
cls.reseni = m.Reseni.objects.create()
# for resitel in cls.resitele[:5]:
# m.Reseni_Resitele(resitel=resitel, reseni=cls.reseni)
def test_cisla_rocniku(self):
vysledkovka_rocniku = VysledkovkaRocniku(self.rocnik1)
self.assertListEqual(vysledkovka_rocniku.cisla_rocniku, [self.cisla1[0]])

1211
uv.lock Normal file

File diff suppressed because it is too large Load diff