Compare commits
No commits in common. "feat/projekt-misto-requirements" and "master" have entirely different histories.
feat/proje
...
master
13 changed files with 74 additions and 1380 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -1,6 +1,3 @@
|
|||
py.typed
|
||||
blaenv
|
||||
|
||||
# virtual env
|
||||
/env/
|
||||
|
||||
|
|
@ -14,8 +11,6 @@ blaenv
|
|||
# aux files
|
||||
*.pyc
|
||||
*.sw[mnop]
|
||||
/build/
|
||||
*.egg-info/
|
||||
|
||||
# secrets
|
||||
/django.secret
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
3.11
|
||||
12
Dockerfile
12
Dockerfile
|
|
@ -1,4 +1,4 @@
|
|||
FROM python:3.11.2-slim-bullseye
|
||||
FROM python:3.9.18-slim-bullseye
|
||||
|
||||
# set work directory
|
||||
WORKDIR /usr/mamweb-docker
|
||||
|
|
@ -16,7 +16,10 @@ RUN apt-get update && apt-get install -y \
|
|||
imagemagick \
|
||||
netcat \
|
||||
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
|
||||
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 . .
|
||||
|
||||
# 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
|
||||
RUN chmod +x /usr/mamweb-docker/docker_entrypoint.sh
|
||||
ENTRYPOINT ["/usr/mamweb-docker/docker_entrypoint.sh"]
|
||||
1
constraints.txt
Normal file
1
constraints.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
# TODO
|
||||
|
|
@ -51,6 +51,10 @@ checklinks.sh
|
|||
-------------
|
||||
„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
|
||||
-------------------------
|
||||
Skript na změnu odsazování.
|
||||
|
|
@ -77,14 +81,6 @@ README.md
|
|||
---------
|
||||
Většina je spíš zbytek po bývalých webařích.
|
||||
|
||||
pyproject.toml
|
||||
--------------
|
||||
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`.)
|
||||
|
||||
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.
|
||||
requirements.txt
|
||||
----------------
|
||||
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`.)
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Skripty pro lokální vývoj
|
|||
^^^^^^^
|
||||
|
||||
``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``
|
||||
Spustí lokální web (ekvivalentní s ``./manage.py runserver``)
|
||||
``make/schema``
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ se do ní (``cd mamweb``)
|
|||
|
||||
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
|
||||
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…
|
||||
|
||||
Následně je potřeba nahrát další data do databáze, což uděláš pomocí příkazů
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ Základ webu
|
|||
===========
|
||||
|
||||
- ``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``
|
||||
- ``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éž
|
||||
|
|
@ -45,7 +45,7 @@ Dokumentace
|
|||
===========
|
||||
|
||||
- ``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
|
||||
=================
|
||||
|
|
@ -57,7 +57,7 @@ Vývojové nástroje
|
|||
- ``ssh``
|
||||
- ``graphviz`` pro vygenerování schématu
|
||||
- ``rsync``
|
||||
- ``ipython3`` – hezčí interaktivní shell (stačí z ``pyproject.toml``)
|
||||
- ``ipython3`` – hezčí interaktivní shell (stačí z ``requirements.txt``)
|
||||
|
||||
Potenciální usnadnění života
|
||||
============================
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@ ensure_venv
|
|||
# Aktualizace toolchainu
|
||||
pip install --upgrade pip setuptools
|
||||
# Instalace závislostí webu
|
||||
pip install --upgrade .
|
||||
pip install --upgrade --group dev
|
||||
pip install --upgrade --group doc
|
||||
pip install -r requirements.txt --upgrade
|
||||
|
||||
# XXX: Připomínka z původního Makefile:
|
||||
echo 'Pro vygenerování tesdat spusť ./manage.py testdata
|
||||
|
|
|
|||
|
|
@ -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
54
requirements.txt
Normal 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
|
||||
48
tests.py
48
tests.py
|
|
@ -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]])
|
||||
Loading…
Reference in a new issue