Jonas Havelka
3 years ago
51 changed files with 753 additions and 7 deletions
@ -1,2 +1,7 @@ |
|||
""" |
|||
Soubory sloužící k deklaraci jednotlivých „views“ (nejčastěji funkce beroucí request |
|||
a vracející :func:`django.shortcuts.render` respektive nějakou response, nebo |
|||
třídy většinou rozšiřující nějakou třídu z :mod:`django.views.generic`) |
|||
""" |
|||
from .autocomplete import * |
|||
from .exports import * |
|||
|
@ -0,0 +1,21 @@ |
|||
# Minimal makefile for Sphinx documentation
|
|||
#
|
|||
|
|||
# You can set these variables from the command line, and also
|
|||
# from the environment for the first two.
|
|||
SPHINXOPTS ?= |
|||
SPHINXBUILD ?= sphinx-build |
|||
SOURCEDIR = . |
|||
BUILDDIR = _build |
|||
|
|||
# Put it first so that "make" without argument is like "make help".
|
|||
help: |
|||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
|||
|
|||
.PHONY: help Makefile |
|||
|
|||
# Catch-all target: route all unknown targets to Sphinx using the new
|
|||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|||
%: Makefile |
|||
sphinx-apidoc --module-first -o modules .. ../*/migrations --templatedir _templates -f |
|||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
@ -0,0 +1,8 @@ |
|||
{%- if show_headings %} |
|||
{{- [basename, ".py"] | join('') | e | heading }} |
|||
|
|||
{% endif -%} |
|||
.. automodule:: {{ qualname }} |
|||
{%- for option in automodule_options %} |
|||
:{{ option }}: |
|||
{%- endfor %} |
@ -0,0 +1,57 @@ |
|||
{%- macro automodule(modname, options) -%} |
|||
.. automodule:: {{ modname }} |
|||
{%- for option in options %} |
|||
:{{ option }}: |
|||
{%- endfor %} |
|||
{%- endmacro %} |
|||
|
|||
{%- macro toctree(docnames) -%} |
|||
.. toctree:: |
|||
:maxdepth: {{ maxdepth }} |
|||
{% for docname in docnames %} |
|||
{{ docname }} |
|||
{%- endfor %} |
|||
{%- endmacro %} |
|||
|
|||
{%- if is_namespace %} |
|||
{{- pkgname | e | heading }} |
|||
{% else %} |
|||
{{- pkgname | e | heading }} |
|||
{% endif %} |
|||
|
|||
{%- if is_namespace %} |
|||
.. py:module:: {{ pkgname }} |
|||
{% endif %} |
|||
|
|||
{%- if modulefirst and not is_namespace %} |
|||
{{ automodule(pkgname, automodule_options) }} |
|||
{% endif %} |
|||
|
|||
{%- if subpackages %} |
|||
{# Subpackages #} |
|||
{# ----------- #} |
|||
|
|||
{{ toctree(subpackages) }} |
|||
{% endif %} |
|||
|
|||
{%- if submodules %} |
|||
{# Submodules #} |
|||
{# ---------- #} |
|||
{% if separatemodules %} |
|||
{{ toctree(submodules) }} |
|||
{% else %} |
|||
{%- for submodule in submodules %} |
|||
{% if show_headings %} |
|||
{{- submodule | e | heading(2) }} |
|||
{% endif %} |
|||
{{ automodule(submodule, automodule_options) }} |
|||
{% endfor %} |
|||
{%- endif %} |
|||
{%- endif %} |
|||
|
|||
{%- if not modulefirst and not is_namespace %} |
|||
Module contents |
|||
--------------- |
|||
|
|||
{{ automodule(pkgname, automodule_options) }} |
|||
{% endif %} |
@ -0,0 +1,7 @@ |
|||
{{ "Seznam aplikací" | heading }} |
|||
|
|||
.. toctree:: |
|||
:maxdepth: {{ maxdepth }} |
|||
{% for docname in docnames %} |
|||
{{ docname }} |
|||
{%- endfor %} |
@ -0,0 +1,87 @@ |
|||
# Configuration file for the Sphinx documentation builder. |
|||
# |
|||
# This file only contains a selection of the most common options. For a full |
|||
# list see the documentation: |
|||
# https://www.sphinx-doc.org/en/master/usage/configuration.html |
|||
|
|||
# -- Path setup -------------------------------------------------------------- |
|||
|
|||
# If extensions (or modules to document with autodoc) are in another directory, |
|||
# add these directories to sys.path here. If the directory is relative to the |
|||
# documentation root, use os.path.abspath to make it absolute, like shown here. |
|||
# |
|||
import os |
|||
import sys |
|||
import django |
|||
sys.path.insert(0, os.path.abspath('..')) |
|||
os.environ['DJANGO_SETTINGS_MODULE'] = 'mamweb.settings' |
|||
django.setup() |
|||
|
|||
|
|||
# -- Project information ----------------------------------------------------- |
|||
|
|||
project = 'Web M&M' |
|||
copyright = '2022, Orgové' |
|||
author = 'Orgové' |
|||
|
|||
|
|||
# -- General configuration --------------------------------------------------- |
|||
|
|||
# Add any Sphinx extension module names here, as strings. They can be |
|||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom |
|||
# ones. |
|||
extensions = [ |
|||
'sphinx.ext.autodoc', |
|||
'sphinx.ext.viewcode', |
|||
'sphinx.ext.intersphinx', |
|||
'sphinx.ext.autosectionlabel', |
|||
'myst_parser', |
|||
] |
|||
|
|||
# Add any paths that contain templates here, relative to this directory. |
|||
templates_path = ['_templates'] |
|||
|
|||
# The language for content autogenerated by Sphinx. Refer to documentation |
|||
# for a list of supported languages. |
|||
# |
|||
# This is also used if you do content translation via gettext catalogs. |
|||
# Usually you set "language" from the command line for these cases. |
|||
language = 'cs' |
|||
|
|||
# List of patterns, relative to source directory, that match files and |
|||
# directories to ignore when looking for source files. |
|||
# This pattern also affects html_static_path and html_extra_path. |
|||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] |
|||
|
|||
|
|||
# -- Options for HTML output ------------------------------------------------- |
|||
|
|||
# The theme to use for HTML and HTML Help pages. See the documentation for |
|||
# a list of builtin themes. |
|||
# |
|||
import sphinx_rtd_theme |
|||
|
|||
html_theme = 'sphinx_rtd_theme' |
|||
|
|||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] |
|||
|
|||
# Add any paths that contain custom static files (such as style sheets) here, |
|||
# relative to this directory. They are copied after the builtin static files, |
|||
# so a file named "default.css" will overwrite the builtin "default.css". |
|||
html_static_path = ['_static'] |
|||
|
|||
# Provázání s jinými dokumentacemi |
|||
intersphinx_mapping = {'python': ('https://docs.python.org/3', None), |
|||
'django': ('http://docs.djangoproject.com/en/3.2/', |
|||
'http://docs.djangoproject.com/en/3.2/_objects/'),} |
|||
|
|||
# Generování tříd/funkcí/atributů v pořádí jak jsou naprogramované |
|||
autodoc_member_order = "bysource" |
|||
|
|||
# Nezobrazování zděděné (ze super tříd) dokumentace TODO nefunguje? |
|||
autodoc_inherit_docstrings = False |
|||
|
|||
source_suffix = { |
|||
'.rst': 'restructuredtext', |
|||
'.md': 'markdown', |
|||
} |
@ -0,0 +1,92 @@ |
|||
Další soubory/složky v kořenovém adresáři |
|||
========================================= |
|||
|
|||
media |
|||
----- |
|||
Složka, kam django nahrává soubory „jako by je nahrávalo do databáze“. |
|||
|
|||
static |
|||
------ |
|||
Složka, kam django nakopíruje všechno ze složek static a pak na to z templatů / kódu jde ukazovat pomocí ``static``. |
|||
|
|||
_git_hooks |
|||
---------- |
|||
Hooky do gitu pro kontrolu Pythoního stylu. Především ``flake8``. |
|||
|
|||
Zbylo tu z minulosti mamwebu. |
|||
|
|||
data |
|||
---- |
|||
Obsahuje data, která patří do databáze, ale jsou přímo součástí webu jako |
|||
takového. Aktuálně jsou to statické stránky, meníčko a rozložení obrázků |
|||
v pozadí meníčka. |
|||
|
|||
Generuje se za pomocí:: |
|||
|
|||
./manage.py dumpdata flatpages > data/flat_new.json |
|||
./fix_json.py data/flat_new.json data/flat.json |
|||
|
|||
nebo (v případě meníčka):: |
|||
|
|||
./manage.py dumpdata sitetree --natrual-foreign > data/sitetree_new.json |
|||
./fix_json.py data/sitetree_new.json data/sitetree.json |
|||
|
|||
deploy_v2 |
|||
--------- |
|||
Věci, které byly potřeba při nasazování nového (2021) webu. |
|||
|
|||
docs |
|||
---- |
|||
Zde je dokumentace webu. Viz :ref:`Sphinx na našem webu`. |
|||
|
|||
setup |
|||
----- |
|||
Tato složka obsahuje různé konfiguráky potřebné k rozběhnutí webu na serveru. |
|||
|
|||
vue_frontend |
|||
------------ |
|||
Obsahuje první pokusy o editory treenodů ve vue. |
|||
|
|||
.gitignore |
|||
---------- |
|||
Klasické `.gitignore`_ |
|||
|
|||
.. _.gitignore: https://git-scm.com/docs/gitignore |
|||
|
|||
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í. |
|||
|
|||
db-local.sqlite3 |
|||
---------------- |
|||
Lokální databáze (na serveru není). |
|||
|
|||
diff_db_backup.sh |
|||
----------------- |
|||
Nevím. Typoval bych skript na diff záloh (resp. dumpů) databáze. |
|||
|
|||
Makefile |
|||
-------- |
|||
Klasické `Makefile`_. Obsahuje například vytvoření virtual_env, instalaci a nasazování webu. |
|||
|
|||
.. _Makefile: https://www.gnu.org/software/make/manual/make.html |
|||
|
|||
manage.py |
|||
--------- |
|||
Základní soubor djanga. |
|||
|
|||
README.md |
|||
--------- |
|||
Většina je spíš zbytek po bývalých webařích. |
|||
|
|||
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`.) |
@ -0,0 +1,55 @@ |
|||
Defaultní dokumentace speciálních souborů |
|||
========================================= |
|||
|
|||
Drobná nápověda k běžným django souborům. (Do nich jsem to vkládal copy-paste.) |
|||
|
|||
admin.py |
|||
-------- |
|||
Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním |
|||
funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco |
|||
upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin` |
|||
s dekorátorem :func:`django.contrib.admin.register`. |
|||
|
|||
Zde se definuje admin pro: |
|||
|
|||
apps.py |
|||
------- |
|||
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |
|||
|
|||
forms.py |
|||
-------- |
|||
Formuláře (:class:`django.forms.Form`) umožňují jednoduchou tvorbu formulářů, |
|||
které lze pak jednoduše dát do frontendu i zpracovat na backendu. |
|||
|
|||
Pro přidání políčka do formuláře je potřeba |
|||
- mít v modelu tu položku, kterou chci upravovat |
|||
- přidat do views (prihlaskaView, resitelEditView) |
|||
- přidat do forms |
|||
- includovat do html |
|||
|
|||
models.py |
|||
--------- |
|||
Tento soubor slouží k definici databázového modelu. |
|||
|
|||
Třídy rozšiřují většinou :class:`django.db.models.Model` a jejich atributy jsou |
|||
většinou sloupce v databázi (tj. nastaví se na hodnotu něčeho z :mod:`django.db.models`). |
|||
Na výběr jsou: |
|||
|
|||
- :class:`django.db.models.TextField` |
|||
- :class:`django.db.models.ForeignKey` |
|||
- :class:`django.db.models.DateField` |
|||
- :class:`django.db.models.DateTimeField` |
|||
- :class:`django.db.models.ImageField` |
|||
- :class:`django.db.models.CharField` |
|||
|
|||
testutils.py |
|||
------------ |
|||
Soubor sloužící ke generování testdat. |
|||
|
|||
urls.py |
|||
------- |
|||
Soubor sloužící jako „router“, tj. zde se definují url adresy a na co ukazují: |
|||
|
|||
views.py |
|||
-------- |
|||
|
@ -0,0 +1,26 @@ |
|||
.. Web M&M documentation master file, created by |
|||
sphinx-quickstart on Mon Jan 31 21:56:04 2022. |
|||
You can adapt this file completely to your liking, but it should at least |
|||
contain the root `toctree` directive. |
|||
|
|||
Vítejte v dokumentaci M&Mího webu! |
|||
=================================== |
|||
|
|||
.. toctree:: |
|||
:caption: M&M web |
|||
:maxdepth: 2 |
|||
|
|||
vyvoj |
|||
sphinx |
|||
dalsi_soubory |
|||
modules/modules |
|||
zapisy/zapisy |
|||
|
|||
|
|||
|
|||
Rejstříky a vyhledávání |
|||
================== |
|||
|
|||
* :ref:`genindex` |
|||
* :ref:`modindex` |
|||
* :ref:`search` |
@ -0,0 +1,37 @@ |
|||
Sphinx na našem webu |
|||
==================== |
|||
|
|||
Dokumentace se zkompiluje příkazem ``make html`` ve složce ``doc``. |
|||
|
|||
Složka ``modules`` je automaticiky generována a přegenerovávána. (**Nic v ní neupravovat!**) |
|||
Jinak všechny rst, co jsou ve složce ``doc`` a jejích podsložkách nezačínajících podtržítkem, budou v dokumentaci a to je přesně to, co editovat pro změnu dokumentace (kromě dokumentace přímo v Pythonu). |
|||
|
|||
Sphinx se píše v rst: `Návod na syntaxi rst`_ `Cheat sheet`_ |
|||
|
|||
.. _Návod na syntaxi rst: https://sphinx-tutorial.readthedocs.io/step-1/#sections |
|||
.. _Cheat sheet: https://sphinx-tutorial.readthedocs.io/cheatsheet/ |
|||
|
|||
make html |
|||
--------- |
|||
Make html dělá následující: Vygenerují se rst soubory do modules z pythoní dokumentace pomocí:: |
|||
|
|||
sphinx-apidoc --module-first -o modules .. ../*/migrations --templatedir _templates -f |
|||
|
|||
- ``--module-first`` říká, že dokumentace modulu má být dřív než to, co obsahuje, |
|||
- ``-o`` je výstupní složka příkazu, |
|||
- ``..`` prochází složku mamweb, |
|||
- ``../*/migrations`` ignoruje migrace |
|||
- ``--templatedir _templates`` určuje templaty, podle kterých se vyrábí rst z Pythoní dokumentace a struktury složek a souborů, |
|||
- ``-f`` donutí phinx znovu přegenerovat soubory, protože nepozná, že se nějaká dokumentace změnila) |
|||
|
|||
Poté se spustí „samotný sphinx“ a vygenerují se soubory v ``_build/html``. |
|||
|
|||
Templates |
|||
--------- |
|||
Templaty jsou originální s pár změnami: |
|||
|
|||
- Změnil jsem nadpisy |
|||
- Odstranil jsem některá slova v nadpisech (module, package, …) |
|||
- Odstranil jsem nadpis Subpackages |
|||
|
|||
přišlo mi to takhle lepší. Ale stále nejsem moc spokojen, protože je to pořád nepřehledné. |
@ -0,0 +1,20 @@ |
|||
Lokální vývoj mamwebu |
|||
===================== |
|||
Stačí spustit:: |
|||
|
|||
## Nahradte svym gimli username |
|||
git clone USER@gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb.git mamweb |
|||
cd mamweb |
|||
## Instalace je trochu magická, spusť následující posloupnost příkazů: |
|||
make install_venv |
|||
. env/bin/activate |
|||
make install_web |
|||
|
|||
## Vygeneruje nejaka testovaci data (spis chuda) |
|||
./manage.py testdata |
|||
## Nahraje statické stránky, menu a obrázky v pozadí menu |
|||
./manage.py loaddata data/* |
|||
## Spusti testovaci server na http://127.0.0.1:8000/ |
|||
./manage.py runserver |
|||
|
|||
Když si lokálně spustíte web, běží na http://127.0.0.1:8000/, admin najdete na http://127.0.0.1:8000/admin/ (admin/admin) Až skončíš s vývojem webu, spusť “deactivate”. Tím zmizí ‘(env)’ ze začátku promptu. |
@ -0,0 +1,5 @@ |
|||
Zápisy |
|||
====== |
|||
|
|||
.. toctree:: |
|||
2021-12-06-testovani_dokumentace_codereview |
@ -0,0 +1,6 @@ |
|||
""" |
|||
Aplikace umožňující „na uživatelské úrovni“ měnit obrázek v pozadí meníčka. |
|||
|
|||
Umožňuje uložit obrázek a následně popsat, na kterých stránkách (podle url) |
|||
a v který čas (den/noc) se má zobrazovat. |
|||
""" |
@ -1,9 +1,24 @@ |
|||
""" |
|||
Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním |
|||
funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco |
|||
upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin` |
|||
s dekorátorem :func:`django.contrib.admin.register`. |
|||
|
|||
Zde se definuje admin pro: |
|||
|
|||
- :class:`~header_fotky.models.FotkaHeader` |
|||
- :class:`~header_fotky.models.FotkaUrlVazba` |
|||
""" |
|||
from django.contrib import admin |
|||
from django.contrib.admin import ModelAdmin |
|||
import header_fotky.models as m |
|||
|
|||
|
|||
class FotkaPozadiAdmin(ModelAdmin): |
|||
""" |
|||
Nastaví čas vložení (:attr:`~header_fotky.models.FotkaHeader.cas`) jako |
|||
readonly = neměnitelný |
|||
""" |
|||
readonly_fields = ['cas'] |
|||
|
|||
admin.site.register(m.FotkaHeader, FotkaPozadiAdmin) |
|||
|
@ -0,0 +1,5 @@ |
|||
""" |
|||
Seznam pdf k opravě a `opraf`_ v djangu místo PHP. |
|||
|
|||
.. _opraf: https://github.com/vitstradal/opraf |
|||
""" |
@ -0,0 +1,6 @@ |
|||
""" |
|||
Zde bývalo vše. Teď tu zbývají všechny modely a části webu jako archiv, |
|||
přehled orgů, aktuální (k aktuálnímu číslu) věci, titulka a jak řešit. |
|||
|
|||
Také je tu generování testovacích (lokálních) dat. |
|||
""" |
Loading…
Reference in new issue