aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app.py16
-rw-r--r--db_setup.py22
-rw-r--r--forms.py85
-rw-r--r--main.py189
-rw-r--r--models.py93
-rw-r--r--tables.py20
-rw-r--r--templates/_formhelpers.html18
-rw-r--r--templates/footer.html3
-rw-r--r--templates/header.html11
-rw-r--r--templates/index.html5
-rw-r--r--templates/results2.html113
-rw-r--r--templates/search_form.html86
12 files changed, 661 insertions, 0 deletions
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..8aaf6dc
--- /dev/null
+++ b/app.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Sun Jan 17 09:38:19 2021
+
+@author: sveter
+"""
+
+# app.py
+from flask import Flask
+from flask_sqlalchemy import SQLAlchemy
+
+app = Flask(__name__)
+app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///justice2.db'
+app.secret_key = "123456"
+db = SQLAlchemy(app) \ No newline at end of file
diff --git a/db_setup.py b/db_setup.py
new file mode 100644
index 0000000..2944ef0
--- /dev/null
+++ b/db_setup.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Sun Jan 17 10:00:18 2021
+
+@author: sveter
+"""
+
+from sqlalchemy import create_engine
+from sqlalchemy.orm import scoped_session, sessionmaker
+from sqlalchemy.ext.declarative import declarative_base
+
+engine = create_engine('sqlite:///justice2.db', convert_unicode=True)
+db_session = scoped_session(sessionmaker(autocommit=False,
+ autoflush=False,
+ bind=engine))
+Base = declarative_base()
+Base.query = db_session.query_property()
+
+def init_db():
+ import models
+ Base.metadata.create_all(bind=engine) \ No newline at end of file
diff --git a/forms.py b/forms.py
new file mode 100644
index 0000000..b1ad78d
--- /dev/null
+++ b/forms.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Sun Jan 17 10:05:34 2021
+
+@author: sveter
+"""
+
+from wtforms import Form, StringField, SelectField, BooleanField
+# class JusticeSearchForm(Form):
+# choices = [('ico', 'Identifikační číslo'),
+# ('nazev', 'Obchodní firma'),]
+# select = SelectField('Search for company:', choices=choices)
+# search = StringField('')
+
+class JusticeSearchForm(Form):
+ search_options = [("text_anywhere","Kedkoliv v textu"),
+ ("text_beginning","Začátek výrazu"),
+ ("text_exact","Přesný výraz"),
+ ]
+ nazev_subjektu = StringField(u'Název subjektu:')
+ nazev_subjektu_selection = SelectField('', choices=search_options)
+ ico_search = StringField(u'Identifikační číslo:')
+ ico_search_selection = SelectField('', choices=search_options)
+ obec_search = StringField(u'Obec:')
+ obec_search_selection = SelectField('', choices=search_options)
+ ulice_search = StringField(u'Ulice:')
+ ulice_search_selection = SelectField('', choices=search_options)
+ oddil_search = StringField(u'Oddíl:')
+ oddil_search_selection = SelectField('', choices=search_options)
+ vlozka_search = StringField(u'Vložka:')
+ vlozka_search_selection = SelectField('', choices=search_options)
+ formy = [ ("",""),
+ ('Akciová společnost', 'Akciová společnost'),
+ ('Společnost s ručením omezeným', 'Společnost s ručením omezeným'),
+ ('Veřejná obchodní společnost', 'Veřejná obchodní společnost'),
+ ('Komanditní společnost', 'Komanditní společnost'),
+ ('Družstvo', 'Družstvo'),
+ ('Zájmové sdružení právnických osob', 'Zájmové sdružení právnických osob'),
+ ('Zahraniční fyzická osoba ', 'Zahraniční fyzická osoba '),
+ ('Ústav', 'Ústav'),
+ ('Společenství vlastníků jednotek', 'Společenství vlastníků jednotek'),
+ ('Spolek', 'Spolek'),
+ ('Příspěvková organizace', 'Příspěvková organizace'),
+ ('Pobočný spolek', 'Pobočný spolek'),
+ ('Odštěpný závod zahraniční právnické osoby', 'Odštěpný závod zahraniční právnické osoby'),
+ ('Organizační složka zahraničního nadačního fondu', 'Organizační složka zahraničního nadačního fondu'),
+ ('Organizační složka zahraniční nadace', 'Organizační složka zahraniční nadace'),
+ ('Organizace zaměstnavatelů', 'Organizace zaměstnavatelů'),
+ ('Odborová organizace', 'Odborová organizace'),
+ ('Nadační fond', 'Nadační fond'),
+ ('Nadace', 'Nadace'),
+ ('Evropská společnost', 'Evropská společnost'),
+ ('Evropské hospodářské zájmové sdružení', 'Evropské hospodářské zájmové sdružení'),
+ ('Evropská družstevní společnost', 'Evropská družstevní společnost'),
+ ]
+ pravni_forma_search = SelectField(u'Právní forma:', choices=formy)
+ soudy = [("",""),
+ ("MSPH","Městský soud v Praze"),
+ ("KSCB","Krajský soud v Českých Budějovicích"),
+ ("KSPL","Krajský soud v Plzni"),
+ ("KSUL","Krajský soud v Ústí nad Labem"),
+ ("KSHK","Krajský soud v Hradci Králové"),
+ ("KSBR","Krajský soud v Brně"),
+ ("KSOS","Krajský soud v Ostravě"),
+ ]
+ soud_search = SelectField(u'Rejstříkjový soud:', choices=soudy)
+ insolvent_only_search = BooleanField("Pouze společnosti s insolvenčním zápisem")
+
+
+
+class CompanyForm(Form):
+ oddil = [('A', 'A'),
+ ('B', 'B'),
+ ('C', 'C'),
+ ]
+ ico = StringField('ico')
+ nazev = StringField('nazev')
+ zapis = StringField('zapis')
+ sidlo = StringField('sidlo')
+ oddil = SelectField('oddil', choices=oddil)
+ vlozka = StringField('vlozka')
+ soud = StringField('soud')
+
+ \ No newline at end of file
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..8969b5d
--- /dev/null
+++ b/main.py
@@ -0,0 +1,189 @@
+# test.py
+from app import app
+from db_setup import init_db, db_session
+from forms import JusticeSearchForm, CompanyForm
+from flask import flash, render_template, request, redirect
+# from models import Company, Soud
+from models import Company, Obce, Ulice, Pravni_Forma, Insolvency_Events
+from tables import Results
+
+init_db()
+
+@app.route('/', methods=['GET', 'POST'])
+def index():
+ search = JusticeSearchForm(request.form)
+ print(search)
+ if request.method == 'POST':
+ return search_results(search)
+
+ return render_template('index.html', form=search)
+
+@app.route('/results')
+def search_results(search):
+ results = []
+ ico = search.ico_search.data
+ ico_search_method = search.ico_search_selection.data
+ nazev = search.nazev_subjektu.data
+ nazev_search_method = search.nazev_subjektu_selection.data
+ oddil = search.oddil_search.data
+ oddil_search_method = search.oddil_search_selection.data
+ vlozka = search.vlozka_search.data
+ vlozka_search_method = search.vlozka_search_selection.data
+ obec = search.obec_search.data
+ obec_search_method = search.obec_search_selection.data
+ ulice = search.ulice_search.data
+ ulice_search_method = search.ulice_search_selection.data
+ pravni_forma = search.pravni_forma_search.data
+ soud = search.soud_search.data
+ insolvent_only = search.insolvent_only_search.data
+ if insolvent_only == False:
+ qry = Company.query.join(Obce, Company.obec).join(Ulice, Company.ulice).join(Pravni_Forma, Company.pravni_forma).join(Insolvency_Events, isouter=True)
+ else:
+ qry = Company.query.join(Obce, Company.obec).join(Ulice, Company.ulice).join(Pravni_Forma, Company.pravni_forma).join(Insolvency_Events)
+ if ico:
+ if ico_search_method == "text_anywhere":
+ qry = qry.filter(Company.ico.contains(ico))
+ elif ico_search_method == "text_beginning":
+ qry = qry.filter(Company.ico.like(f'{ico}%'))
+ elif ico_search_method == "text_exact":
+ qry = qry.filter(Company.ico == ico)
+ if nazev:
+ if nazev_search_method == "text_anywhere":
+ qry = qry.filter(Company.nazev.contains(nazev))
+ elif nazev_search_method == "text_beginning":
+ qry = qry.filter(Company.nazev.like(f'{nazev}%'))
+ elif nazev_search_method == "text_exact":
+ qry = qry.filter(Company.nazev == nazev)
+ if oddil:
+ if oddil_search_method == "text_anywhere":
+ qry = qry.filter(Company.oddil.contains(oddil))
+ elif oddil_search_method == "text_beginning":
+ qry = qry.filter(Company.oddil.like(f'{oddil}%'))
+ elif oddil_search_method == "text_exact":
+ qry = qry.filter(Company.oddil == oddil)
+ # qry = qry.filter(Company.oddil.contains(oddil))
+ if vlozka:
+ if vlozka_search_method == "text_anywhere":
+ qry = qry.filter(Company.vlozka.contains(vlozka))
+ elif vlozka_search_method == "text_beginning":
+ qry = qry.filter(Company.vlozka.like(f'{vlozka}%'))
+ elif vlozka_search_method == "text_exact":
+ qry = qry.filter(Company.vlozka == vlozka)
+
+ # qry = qry.filter(Company.vlozka.contains(vlozka))
+ if obec:
+ if obec_search_method == "text_anywhere":
+ qry = qry.filter(Obce.obec_jmeno.contains(obec))
+ elif obec_search_method == "text_beginning":
+ qry = qry.filter(Obce.obec_jmeno.like(f'{obec}%'))
+ elif obec_search_method == "text_exact":
+ qry = qry.filter(Obce.obec_jmeno == obec)
+ # qry = qry.filter(Obce.obec_jmeno.contains(obec))
+ if ulice:
+ if ulice_search_method == "text_anywhere":
+ qry = qry.filter(Ulice.ulice_jmeno.contains(ulice))
+ elif ulice_search_method == "text_beginning":
+ qry = qry.filter(Ulice.ulice_jmeno.like(f'{ulice}%'))
+ elif ulice_search_method == "text_exact":
+ qry = qry.filter(Ulice.ulice_jmeno == ulice)
+
+ # qry = qry.filter(Ulice.ulice_jmeno.contains(ulice))
+ if pravni_forma:
+ qry = qry.filter(Pravni_Forma.pravni_forma.contains(pravni_forma))
+ if soud:
+ qry = qry.filter(Company.soud.contains(soud))
+ results = qry.all()
+ # else:
+ # qry = db_session.query(Company)
+ # results = qry.all()
+ # else:
+ # qry = db_session.query(Company)
+ # results = qry.all()
+
+ if not results:
+ flash('No results found!')
+ return redirect('/')
+
+ else:
+ table = Results(results)
+ table.border = True
+ # return render_template('results.html', table=table)
+ return render_template("results2.html", results=results, form=search)
+
+def search_results_BACKUP(search):
+ results = []
+ search_string = search.data['search']
+
+ if search_string:
+ # if search.data['select'] == 'soud':
+ # qry = db_session.query(Company, Soud).filter(
+ # Soud.id==Company.soud_id).filter(
+ # Soud.name.contains(search_string))
+ # results = [item[0] for item in qry.all()]
+ if search.data['select'] == 'nazev':
+ qry = db_session.query(Company).filter(
+ Company.nazev.contains(search_string))
+ results = qry.all()
+ elif search.data['select'] == 'ico':
+ qry = db_session.query(Company).filter(
+ Company.ico.contains(search_string))
+ results = qry.all()
+ else:
+ qry = db_session.query(Company)
+ results = qry.all()
+ else:
+ qry = db_session.query(Company)
+ results = qry.all()
+
+ if not results:
+ flash('No results found!')
+ return redirect('/')
+
+ else:
+ table = Results(results)
+ table.border = True
+ return render_template('results.html', table=table)
+
+
+@app.route('/new_company', methods=['GET', 'POST'])
+def new_company():
+ """
+ Add a new company
+ """
+ form = CompanyForm(request.form)
+
+ if request.method == 'POST' and form.validate():
+ # save the album
+ company = Company()
+ save_changes(company, form, new=True)
+ flash('Company created successfully!')
+ return redirect('/')
+ return render_template('new_company.html', form=form)
+
+def save_changes(company, form, new=False):
+ """
+ Save the changes to the database
+ """
+ # Get data from form and assign it to the correct attributes
+ # of the SQLAlchemy table object
+ # soud = Soud()
+ # soud.name = form.soud.data
+
+ # company.soud = soud
+ company.soud = form.soud.data
+ company.ico = form.ico.data
+ company.nazev = form.nazev.data
+ company.sidlo = form.sidlo.data
+ company.zapis = form.zapis.data
+ company.oddil = form.oddil.data
+ company.vlozka = form.vlozka.data
+ company.vymaz = form.vymaz.data
+ if new:
+ # Add the new album to the database
+ db_session.add(company)
+ # commit the data to the database
+ db_session.commit()
+
+
+if __name__ == '__main__':
+ app.run() \ No newline at end of file
diff --git a/models.py b/models.py
new file mode 100644
index 0000000..b90d01f
--- /dev/null
+++ b/models.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Sun Jan 17 09:56:14 2021
+
+@author: sveter
+"""
+
+from app import db
+from sqlalchemy.orm import relationship, backref
+
+# class Soud(db.Model):
+# __tablename__ = "soudy"
+# id = db.Column(db.Integer, primary_key=True)
+# name = db.Column(db.String)
+
+# def __repr__(self):
+# # return "<soud: {}="">".format(self.name)
+# return self.name
+
+association_table = db.Table("obce_relation",
+ db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False),
+ db.Column("obec_id", db.Integer, db.ForeignKey("obce.id"), nullable=False),
+ # db.PrimaryKeyConstraint('company_id', 'obec_id')
+ )
+
+ulice_association = db.Table("ulice_relation",
+ db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False),
+ db.Column("ulice_id", db.Integer, db.ForeignKey("ulice.id"), nullable=False),
+ # db.PrimaryKeyConstraint('company_id', 'obec_id')
+ )
+
+pravni_forma_association=db.Table("pravni_formy_relation",
+ db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False),
+ db.Column("pravni_forma_id", db.Integer, db.ForeignKey("pravni_formy.id"), nullable=False),
+ )
+
+class Company(db.Model):
+
+ __tablename__ = "companies"
+ id = db.Column(db.Integer, primary_key=True)
+ ico = db.Column(db.String)
+ nazev = db.Column(db.String)
+ zapis = db.Column(db.String)
+ sidlo = db.Column(db.String)
+ oddil = db.Column(db.String)
+ vlozka = db.Column(db.String)
+ soud = db.Column(db.String)
+ obec = db.relationship("Obce", secondary=association_table, backref="companies")
+ ulice = db.relationship("Ulice", secondary=ulice_association, backref="companies")
+ pravni_forma = db.relationship("Pravni_Forma", secondary=pravni_forma_association, backref="companies")
+ insolvence = db.relationship("Insolvency_Events", backref="companies")
+
+
+class Obce(db.Model):
+ __tablename__ = "obce"
+ id = db.Column(db.Integer, primary_key=True)
+ obec_jmeno = db.Column(db.String)
+ company_obec = db.relationship("Company", secondary=association_table, backref="obce")
+
+class Ulice(db.Model):
+ __tablename__ = "ulice"
+ id = db.Column(db.Integer, primary_key=True)
+ ulice_jmeno = db.Column(db.String)
+ company_ulice = db.relationship("Company", secondary=ulice_association)
+
+class Pravni_Forma(db.Model):
+ __tablename__ = "pravni_formy"
+ id = db.Column(db.Integer, primary_key=True)
+ pravni_forma = db.Column(db.String)
+ company_pravni_forma = db.relationship("Company", secondary=pravni_forma_association)
+
+class Insolvency_Events(db.Model):
+ __tablename__ = "insolvency_events"
+ id = db.Column(db.Integer, primary_key=True)
+ company_id = db.Column(db.String, db.ForeignKey("companies.id"))
+ company = relationship("Company", backref="insolvency_events")
+ insolvency_event = db.Column(db.String)
+
+
+# class Association(db.Model):
+# __tablename__ = "obce_relation"
+# company_id = db.Column(db.Integer, db.ForeignKey('companies.id'), primary_key=True)
+# obec_id = db.Column(db.Integer, db.ForeignKey('obce.id'))
+
+# company = relationship("Company", back_populates = "Obce")
+# obec = relationship("Obce", back_populates = "Company")
+
+
+
+
+
+# </soud:> \ No newline at end of file
diff --git a/tables.py b/tables.py
new file mode 100644
index 0000000..e9586c9
--- /dev/null
+++ b/tables.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Sun Jan 17 11:52:57 2021
+
+@author: sveter
+"""
+
+from flask_table import Table, Col
+
+class Results(Table):
+ classes = ['table']
+ id = Col('Id', show=False)
+ nazev = Col('Obchodní firma')
+ ico = Col('IČ')
+ sidlo = Col('Sídlo')
+ zapis = Col('Zápis do OR')
+ oddil = Col('Oddíl')
+ vlozka = Col('Vložka')
+ soud = Col('Rejstříkový soud') \ No newline at end of file
diff --git a/templates/_formhelpers.html b/templates/_formhelpers.html
new file mode 100644
index 0000000..3a89e09
--- /dev/null
+++ b/templates/_formhelpers.html
@@ -0,0 +1,18 @@
+{% macro render_field(field) %}
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ field.label }}
+ </div>
+ <div class="col-sm">
+ {{ field(**kwargs)|safe }}
+ </div>
+ </div>
+
+ {% if field.errors %}
+ <ul class="errors">
+ {% for error in field.errors %}
+ <li>{{ error }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+{% endmacro %} \ No newline at end of file
diff --git a/templates/footer.html b/templates/footer.html
new file mode 100644
index 0000000..8f6dbe5
--- /dev/null
+++ b/templates/footer.html
@@ -0,0 +1,3 @@
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
+</body>
+</html> \ No newline at end of file
diff --git a/templates/header.html b/templates/header.html
new file mode 100644
index 0000000..30a4ebd
--- /dev/null
+++ b/templates/header.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <!-- Required meta tags -->
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <!-- Bootstrap CSS -->
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
+<title>Search Results - Flask Justice Database</title>
+<body> \ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..267d6cb
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,5 @@
+{% include 'header.html' %}
+
+{% include 'search_form.html' %}
+
+{% include 'footer.html' %} \ No newline at end of file
diff --git a/templates/results2.html b/templates/results2.html
new file mode 100644
index 0000000..b7de3fc
--- /dev/null
+++ b/templates/results2.html
@@ -0,0 +1,113 @@
+{% include 'header.html' %}
+
+{% include 'search_form.html' %}
+
+ <p><b>Počet nalezených subjektů: {{ results|length }}</b></p>
+ {% for row in results %}
+
+ {% set insolvency_notes = [] %}
+ {% for elem in row.insolvence %}
+ {% set insolvency_notes = insolvency_notes.append(elem.insolvency_event) %}
+ {% endfor %}
+
+ {% set zapis_split = row.zapis.split("-") %}
+ {% if zapis_split[1] == "01" %}
+ {% set mesic = "ledna" %}
+ {% elif zapis_split[1] == "02" %}
+ {% set mesic = "února" %}
+ {% elif zapis_split[1] == "03" %}
+ {% set mesic = "března" %}
+ {% elif zapis_split[1] == "04" %}
+ {% set mesic = "dubna" %}
+ {% elif zapis_split[1] == "05" %}
+ {% set mesic = "května" %}
+ {% elif zapis_split[1] == "06" %}
+ {% set mesic = "června" %}
+ {% elif zapis_split[1] == "07" %}
+ {% set mesic = "července" %}
+ {% elif zapis_split[1] == "08" %}
+ {% set mesic = "srpna" %}
+ {% elif zapis_split[1] == "09" %}
+ {% set mesic = "září" %}
+ {% elif zapis_split[1] == "10" %}
+ {% set mesic = "října" %}
+ {% elif zapis_split[1] == "11" %}
+ {% set mesic = "listopadu" %}
+ {% elif zapis_split[1] == "12" %}
+ {% set mesic = "prosince" %}
+ {% endif %}
+
+ {% if zapis_split[2][0] == "0" %}
+ {% set den = zapis_split[2][1] %}
+ {% else %}
+ {% set den = zapis_split[2] %}
+ {% endif %}
+
+ {% if row.soud == "MSPH" %}
+ {% set soud = "Městského soudu v Praze" %}
+ {% elif row.soud == "KSCB" %}
+ {% set soud = "Krajského soudu v Českých Budějovicích" %}
+ {% elif row.soud == "KSOS" %}
+ {% set soud = "Krajského soudu v Ostravě" %}
+ {% elif row.soud == "KSPL" %}
+ {% set soud = "Krajského soudu v Plzni" %}
+ {% elif row.soud == "KSBR" %}
+ {% set soud = "Krajského soudu v Brně" %}
+ {% elif row.soud == "KSHK" %}
+ {% set soud = "Krajského soudu v Hradci Králové" %}
+ {% elif row.soud == "KSUL" %}
+ {% set soud = "Krajského soudu v Ústí nad Labem" %}
+ {% endif %}
+
+ {% if insolvency_notes|length > 0 %}
+ {% set table_style = "table table-danger" %}
+ {% elif loop.index % 2 == 0 %}
+ {% set table_style = "table table-light" %}
+ {% else %}
+ {% set table_style = "table table-secondary" %}
+ {% endif %}
+
+ {% if row.ico|length != 8 %}
+ {% set ico_buffer = [] %}
+ {% for i in range (8 - row.ico|length) %}
+ {% set ico_buffer = ico_buffer.append("0") %}
+ {% endfor %}
+
+ {% else %}
+ {% set ico_buffer = "" %}
+ {% endif %}
+
+
+
+
+ <table class= "{{table_style}}" style="width: 100%">
+ <p></p>
+ <tr>
+ <td style="width:15%">Název subjektu:</td>
+ <td style="width:50%"><b>{{ row.nazev }}</b></td>
+ <td style="width:10%">IČO:</td>
+ <td style="width:25%"><b>{{ ico_buffer|join("") }}{{ row.ico }}</b></td>
+ </tr>
+ <tr>
+ <td>Spisová značka:</td>
+ <td>{{ row.oddil }} {{ row.vlozka }} vedená u {{ soud }}</td>
+ <td>Den zápisu:</td>
+ <td>{{den}}. {{mesic}} {{zapis_split[0]}}</td>
+ </tr>
+ <tr>
+ <td>Sídlo:</td>
+ <td>{{ row.sidlo }}</td>
+ <td></td>
+ <td></td>
+ </tr>
+ {% if insolvency_notes|length > 0 %}
+ {% for i in range (insolvency_notes|length) %}
+ <tr>
+ <td colspan="4">{{ insolvency_notes[i] }}</td>
+ </tr>
+ {% endfor %}
+ {% endif %}
+ </table>
+ {% endfor %}
+
+{% include 'footer.html' %} \ No newline at end of file
diff --git a/templates/search_form.html b/templates/search_form.html
new file mode 100644
index 0000000..4268758
--- /dev/null
+++ b/templates/search_form.html
@@ -0,0 +1,86 @@
+<title>Justice Database</title>
+
+<h2>Justice Database</h2>
+
+<p></p><p>
+
+{% with messages = get_flashed_messages() %}
+ {% if messages %}
+ <ul class="flashes">
+ {% for message in messages %}
+ <li>{{ message }}</li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+{% endwith %}
+
+
+{% from "_formhelpers.html" import render_field %}
+
+<form method="post">
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.nazev_subjektu.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.nazev_subjektu()|safe }} {{ form.nazev_subjektu_selection }}
+ </div>
+ </div>
+
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.ico_search.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.ico_search()|safe }} {{ form.ico_search_selection }}
+ </div>
+ </div>
+
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.obec_search.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.obec_search()|safe }} {{ form.obec_search_selection }}
+ </div>
+ </div>
+
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.ulice_search.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.ulice_search()|safe }} {{ form.ulice_search_selection }}
+ </div>
+ </div>
+
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.oddil_search.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.oddil_search()|safe }} {{ form.oddil_search_selection }}
+ </div>
+ </div>
+
+ <div class="row g-2">
+ <div class="col-sm-3">
+ {{ form.vlozka_search.label }}
+ </div>
+ <div class="col-sm">
+ {{ form.vlozka_search()|safe }} {{ form.vlozka_search_selection }}
+ </div>
+ </div>
+ <div class="row g-2">
+ {{ render_field(form.pravni_forma_search) }}
+ </div>
+ <div class="row g-2">
+ {{ render_field(form.soud_search) }}
+ </div>
+ <div class="row g-2">
+ {{ render_field(form.insolvent_only_search) }}
+ </div>
+ </p>
+ <p><input type="submit" value="Search">
+ </p>
+</form>