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 .autocomplete import * |
||||
from .exports 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 import admin |
||||
from django.contrib.admin import ModelAdmin |
from django.contrib.admin import ModelAdmin |
||||
import header_fotky.models as m |
import header_fotky.models as m |
||||
|
|
||||
|
|
||||
class FotkaPozadiAdmin(ModelAdmin): |
class FotkaPozadiAdmin(ModelAdmin): |
||||
|
""" |
||||
|
Nastaví čas vložení (:attr:`~header_fotky.models.FotkaHeader.cas`) jako |
||||
|
readonly = neměnitelný |
||||
|
""" |
||||
readonly_fields = ['cas'] |
readonly_fields = ['cas'] |
||||
|
|
||||
admin.site.register(m.FotkaHeader, FotkaPozadiAdmin) |
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