Compare commits

..

No commits in common. "feat/projekt-misto-requirements" and "master" have entirely different histories.

13 changed files with 74 additions and 1380 deletions

5
.gitignore vendored
View file

@ -1,6 +1,3 @@
py.typed
blaenv
# virtual env # virtual env
/env/ /env/
@ -14,8 +11,6 @@ blaenv
# aux files # aux files
*.pyc *.pyc
*.sw[mnop] *.sw[mnop]
/build/
*.egg-info/
# secrets # secrets
/django.secret /django.secret

View file

@ -1 +0,0 @@
3.11

View file

@ -1,4 +1,4 @@
FROM python:3.11.2-slim-bullseye FROM python:3.9.18-slim-bullseye
# set work directory # set work directory
WORKDIR /usr/mamweb-docker WORKDIR /usr/mamweb-docker
@ -16,7 +16,10 @@ RUN apt-get update && apt-get install -y \
imagemagick \ imagemagick \
netcat \ netcat \
postgresql-client postgresql-client
RUN pip install --upgrade pip setuptools RUN pip install --upgrade pip
COPY ./requirements.txt .
COPY ./constraints.txt .
RUN pip install -r requirements.txt
# allow correct locales # allow correct locales
RUN sed -i '/cs_CZ.UTF-8/s/^# //g' /etc/locale.gen && \ RUN sed -i '/cs_CZ.UTF-8/s/^# //g' /etc/locale.gen && \
@ -28,11 +31,6 @@ ENV LC_ALL cs_CZ.UTF-8
# copy project # copy project
COPY . . COPY . .
# Install dependencies
RUN pip install --upgrade .
RUN pip install --upgrade --group dev
RUN pip install --upgrade --group doc
# create test data once db is ready # create test data once db is ready
RUN chmod +x /usr/mamweb-docker/docker_entrypoint.sh RUN chmod +x /usr/mamweb-docker/docker_entrypoint.sh
ENTRYPOINT ["/usr/mamweb-docker/docker_entrypoint.sh"] ENTRYPOINT ["/usr/mamweb-docker/docker_entrypoint.sh"]

1
constraints.txt Normal file
View file

@ -0,0 +1 @@
# TODO

View file

@ -51,6 +51,10 @@ checklinks.sh
------------- -------------
„Týrací“ skript na kontrolu, že nic, kam se lze proklikat na webu, nehází chybu. „Týrací“ skript na kontrolu, že nic, kam se lze proklikat na webu, nehází chybu.
constraints.txt
---------------
Obsahuje omezení na :ref:`requirements.txt`.
convert_spaces_to_tabs.sh convert_spaces_to_tabs.sh
------------------------- -------------------------
Skript na změnu odsazování. Skript na změnu odsazování.
@ -77,14 +81,6 @@ README.md
--------- ---------
Většina je spíš zbytek po bývalých webařích. Většina je spíš zbytek po bývalých webařích.
pyproject.toml requirements.txt
-------------- ----------------
Popis Pythoního projektu, tedy například seznam balíčků, které jsou potřeba pro běh mamwebu. (Cílem je vytvoření virtualenvu se všemi těmito balíčky, např. pomocí daného příkazu v :ref:`Makefile`.) Seznam balíčků, které jsou potřeba pro běh mamwebu. (Cílem je vytvoření virtualenvu se všemi těmito balíčky, např. pomocí daného příkazu v :ref:`Makefile`.)
uv.lock + .python-version
-------------------------
Pokud používáš uv, tak je to soubor s verzemi balíčků + Pythonu, které jsou potřeba pro běh mamwebu.
dockerfile-compose.yml + docker_entrypoint.sh + Dockerfile
----------------------------------------------------------
Soubory pro Docker.

View file

@ -75,7 +75,7 @@ Skripty pro lokální vývoj
^^^^^^^ ^^^^^^^
``make/install_web`` (nebo ekvivalentně ``make/install``) ``make/install_web`` (nebo ekvivalentně ``make/install``)
Vytvoří virtualenv a nainstaluje do něj závislosti webu podle ``pyproject.toml``. Následně popíše, jak vyrobit zbytek lokálního webu. Vytvoří virtualenv a nainstaluje do něj závislosti webu podle ``requirements.txt``. Následně popíše, jak vyrobit zbytek lokálního webu.
``make/run`` ``make/run``
Spustí lokální web (ekvivalentní s ``./manage.py runserver``) Spustí lokální web (ekvivalentní s ``./manage.py runserver``)
``make/schema`` ``make/schema``

View file

@ -62,9 +62,9 @@ se do ní (``cd mamweb``)
O zprovoznění webu se stará skript ``make/install_web``, stačí ho spustit. Ten O zprovoznění webu se stará skript ``make/install_web``, stačí ho spustit. Ten
vytvoří virtualenv (neexistuje-li) a nainstaluje do něj závislosti webu (podle vytvoří virtualenv (neexistuje-li) a nainstaluje do něj závislosti webu (podle
souboru ``pyproject.toml``). souboru ``requirements.txt``).
.. FIXME: Novowebaři zmínka o pyproject.toml tady moc nepomůže, to má být na .. FIXME: Novowebaři zmínka o requirements.txt tady moc nepomůže, to má být na
stránce o celkové stavbě repozitáře a stacku… stránce o celkové stavbě repozitáře a stacku…
Následně je potřeba nahrát další data do databáze, což uděláš pomocí příkazů Následně je potřeba nahrát další data do databáze, což uděláš pomocí příkazů

View file

@ -16,7 +16,7 @@ Základ webu
=========== ===========
- ``python3`` Ideálně Python 3.9, jenž je na Gimlim - ``python3`` Ideálně Python 3.9, jenž je na Gimlim
- ``python3-pip`` pro instalaci dalších Pythoních balíčků podle ``pyproject.toml`` - ``python3-pip`` pro instalaci dalších Pythoních balíčků podle ``requirements.txt``
- ``python3-venv`` - ``python3-venv``
- ``gcc`` kompilace Pythoních knihoven ze zdrojových distribucí (sdist), možná (neotestováno) jde jako alternativu použít ``python3-wheel`` a stahovat bdists - ``gcc`` kompilace Pythoních knihoven ze zdrojových distribucí (sdist), možná (neotestováno) jde jako alternativu použít ``python3-wheel`` a stahovat bdists
- ``python3-dev`` taktéž - ``python3-dev`` taktéž
@ -45,7 +45,7 @@ Dokumentace
=========== ===========
- ``make`` pro zbuildění - ``make`` pro zbuildění
- Pythoní balíčky podle příslušné části ``pyproject.toml`` - Pythoní balíčky podle příslušné části ``requirements.txt``
Vývojové nástroje Vývojové nástroje
================= =================
@ -57,7 +57,7 @@ Vývojové nástroje
- ``ssh`` - ``ssh``
- ``graphviz`` pro vygenerování schématu - ``graphviz`` pro vygenerování schématu
- ``rsync`` - ``rsync``
- ``ipython3`` hezčí interaktivní shell (stačí z ``pyproject.toml``) - ``ipython3`` hezčí interaktivní shell (stačí z ``requirements.txt``)
Potenciální usnadnění života Potenciální usnadnění života
============================ ============================

View file

@ -8,9 +8,7 @@ ensure_venv
# Aktualizace toolchainu # Aktualizace toolchainu
pip install --upgrade pip setuptools pip install --upgrade pip setuptools
# Instalace závislostí webu # Instalace závislostí webu
pip install --upgrade . pip install -r requirements.txt --upgrade
pip install --upgrade --group dev
pip install --upgrade --group doc
# XXX: Připomínka z původního Makefile: # XXX: Připomínka z původního Makefile:
echo 'Pro vygenerování tesdat spusť ./manage.py testdata echo 'Pro vygenerování tesdat spusť ./manage.py testdata

View file

@ -1,88 +0,0 @@
[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",
]
# Zkratka, aby se při `uv sync` nainstalovalo všechno
[tool.uv]
default-groups = ["dev", "doc"]
# Aby fungovalo `pip install --upgrade .`
[tool.setuptools]
packages = [
"mamweb",
"seminar",
"tvorba",
"galerie",
"korektury",
"prednasky",
"header_fotky",
"various",
"api",
"aesop",
"odevzdavatko",
"vysledkovky",
"personalni",
"soustredeni",
"treenode",
"vyroci",
"sifrovacka",
"novinky",
]

54
requirements.txt Normal file
View file

@ -0,0 +1,54 @@
-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

View file

@ -1,48 +0,0 @@
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

File diff suppressed because it is too large Load diff