From ca9a93be9fee0b1b474d5d97268d7d6e4e974fc1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:05:48 +0800
Subject: [PATCH 1/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../models/property_bank_statements.py | 53 +++++++------
yuthon_property/security/ir.model.access.csv | 1 +
.../views/property_bank_statements_views.xml | 12 +--
.../models/inherit_yuthon_property.py | 26 +++----
.../views/inherit_yuthon_property_views.xml | 73 ++++++------------
.../wizard/binding_information_wizard.py | 77 ++++++++++++-------
6 files changed, 118 insertions(+), 124 deletions(-)
diff --git a/yuthon_property/models/property_bank_statements.py b/yuthon_property/models/property_bank_statements.py
index 5d5e212d3..2b94df2ca 100644
--- a/yuthon_property/models/property_bank_statements.py
+++ b/yuthon_property/models/property_bank_statements.py
@@ -31,32 +31,18 @@ class PropertyBankStatements(models.Model):
contract_account = fields.Char(string="合同累计应收")
contract_penalty = fields.Char(string="合同累计违约金")
original_amount = fields.Float(string='交易金额')
- yes_amount = fields.Float(string='已对')
+ yes_amount = fields.Float(stringo='已对')
no_amount = fields.Float(string='未对')
reconciliation_time = fields.Datetime('对账时间')
voucher_type = fields.Selection([('electronic_transfer', '电子转账凭证'), ('telegraphic_transfer', '电汇凭证')], string='凭证种类')
remake = fields.Text('备注')
registered = fields.Float('挂账')
-
- create_receivable_ids = fields.Many2many(
- 'property.accounts.receivable',
- 'property_bank_stmt_create_receivable_rel',
- 'bank_stmt_id',
- 'receivable_id',
- string='创建应收单'
- )
- write_receivable_ids = fields.Many2many(
- 'property.accounts.receivable',
- 'property_bank_stmt_write_receivable_rel',
- 'bank_stmt_id',
- 'receivable_id',
- string='修改应收单'
- )
is_reconciliation = fields.Boolean('是否对账') # 无效
company_select = fields.Selection([('jhtz', '天河投资'), ('thwg', '天河物管'), ('thcj', '天河城建')])
property_ids = fields.Many2many('yuthon.property', string='物业地址')
bank_state = fields.Selection([('not_reconciled', '未对账'), ('reconciled', '已对账'), ('registered', '挂账'), ('other', '其他')], string='状态', default='not_reconciled')
is_company = fields.Boolean(compute='_compute_is_company', search='_search_part_of_company')
+ receivable_modify_ids = fields.One2many('receivable.modify.line', 'bank_id', string='修改应收单')
@api.depends_context('uid', 'company')
@api.depends('your_own_account')
@@ -95,22 +81,23 @@ class PropertyBankStatements(models.Model):
return domain or [('id', '=', 0)]
def other(self):
- for rec in self:
+ bank_ids = self.env["property.bank.statements"].browse(
+ self._context.get('active_ids', self._context.get('active_id')))
+ for rec in bank_ids:
rec.bank_state = 'other'
- receivable_ids = self.env['property.accounts.receivable'].search([('lessee_id.name', '=', self.name_account)])
- property_list = []
- for property in self.property_ids:
- property_list.append(property.name)
- property_names = ",".join(property_list)
- for receivable in receivable_ids:
- receivable_log = f'当前登录人{self.env.user.name}于{fields.Datetime.now()}将物业为 {property_names} 的银行对账单状态修改为其他'
- for record in self:
- original_log = record.receivable_log or ''
+ receivable_ids = self.env['property.accounts.receivable'].search([('lessee_id.name', '=', rec.name_account)])
+ property_list = []
+ for property in rec.property_ids:
+ property_list.append(property.name)
+ property_names = ",".join(property_list)
+ for receivable in receivable_ids:
+ receivable_log = f'当前登录人{self.env.user.name}于{fields.Datetime.now()}将物业为 {property_names} 的银行对账单状态修改为其他'
+ original_log = receivable.receivable_log or ''
if original_log:
new_log = f"{original_log}\n{receivable_log}"
else:
new_log = receivable_log
- receivable.write({'receivable_log': new_log})
+ receivable.write({'receivable_log': new_log})
@api.onchange('name')
def _onchange_bank_account(self):
@@ -207,3 +194,15 @@ class PropertyBankStatements(models.Model):
])
if accounts:
rec.reconciliation_time = accounts[0].reconciliation_time
+
+class ReceivableModifyLine(models.Model):
+ _name = 'receivable.modify.line'
+ _description = '修改应收账单明细'
+
+ bank_id = fields.Many2one('property.bank.statements', string='关联银行对账单')
+ receivable_id = fields.Many2one('property.accounts.receivable', string='应收账单')
+ amount = fields.Float(string='修改金额')
+
+
+
+
diff --git a/yuthon_property/security/ir.model.access.csv b/yuthon_property/security/ir.model.access.csv
index f83a09005..b3e2867c3 100644
--- a/yuthon_property/security/ir.model.access.csv
+++ b/yuthon_property/security/ir.model.access.csv
@@ -88,6 +88,7 @@ access_evaluation_plan_wizard,evaluation_plan_wizard,model_evaluation_plan_wizar
access_receivable_log_wizard, receivable.log.wizard,model_receivable_log_wizard,base.group_user,1,1,1,1
access_amount_way,amount_way,model_amount_way,base.group_user,1,1,1,1
access_property_summary_report, property_summary_report,model_property_summary_report,base.group_user,1,1,1,1
+access_receivable_modify_line, receivable.modify.line,model_receivable_modify_line,base.group_user,1,1,1,1
access_meter_price_wizard, meter_price_wizard,model_meter_price_wizard,base.group_user,1,1,1,1
access_water_price_wizard, water_price_wizard,model_water_price_wizard,base.group_user,1,1,1,1
diff --git a/yuthon_property/views/property_bank_statements_views.xml b/yuthon_property/views/property_bank_statements_views.xml
index 1fdd632bf..dcc957ef5 100644
--- a/yuthon_property/views/property_bank_statements_views.xml
+++ b/yuthon_property/views/property_bank_statements_views.xml
@@ -5,6 +5,9 @@
property.bank.statements
+
@@ -30,6 +33,7 @@
+
property.bank.statements.tree
property.bank.statements
@@ -37,10 +41,9 @@
-
-
-
+
@@ -65,7 +68,6 @@
-
diff --git a/yuthon_property_approval/models/inherit_yuthon_property.py b/yuthon_property_approval/models/inherit_yuthon_property.py
index 705664e32..ae2f59fd0 100644
--- a/yuthon_property_approval/models/inherit_yuthon_property.py
+++ b/yuthon_property_approval/models/inherit_yuthon_property.py
@@ -153,21 +153,20 @@ class PropertyBankStatements(models.Model):
statements_ids = self.env["property.bank.statements"].browse(
self._context.get('active_ids', self._context.get('active_id'))
)
-
for statement in statements_ids:
- bank_account = self.env['property.bank.line'].search([
- ('bank', '=', statement.name) # 假设statement.name存储银行账号
- ])
- if bank_account.tenant_id:
- # 获取需要删除的合同明细行
- lines_to_delete = self.env['property.tenant.line'].search([
- ('tenant_id', '=', bank_account.tenant_id.id),
- ('lease_contract_id', 'in', statement.contract_ids.ids)
+ if statement.name:
+ bank_account = self.env['property.bank.line'].search([
+ ('bank', '=', statement.name) # 假设statement.name存储银行账号
])
- # 删除合同明细行
- if lines_to_delete:
- lines_to_delete.unlink()
-
+ if bank_account.tenant_id:
+ # 获取需要删除的合同明细行
+ lines_to_delete = self.env['property.tenant.line'].search([
+ ('tenant_id', '=', bank_account.tenant_id.id),
+ ('lease_contract_id', 'in', statement.contract_ids.ids)
+ ])
+ # 删除合同明细行
+ if lines_to_delete:
+ lines_to_delete.unlink()
statement.contract_ids = [(5,)]
statement.property_ids = [(5,)]
@@ -630,7 +629,6 @@ class PropertyRentList(models.Model):
if not management_type:
management_type = self.env['yuthon.management.type'].create({'name': '租金'})
due_date = rec.due_date
- due_date_end = False
theoretical_end = False
contract = rec.contract_id
if contract and contract.cycle_mode and due_date:
diff --git a/yuthon_property_approval/views/inherit_yuthon_property_views.xml b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
index ac70099e8..32bf7d63b 100644
--- a/yuthon_property_approval/views/inherit_yuthon_property_views.xml
+++ b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
@@ -55,21 +55,16 @@
property.rent.list
+
+
+
-
-
-
-
- 批量推送
-
-
- code
- action = model.batch_push_rent()
-
租金列表
property.rent.list
@@ -90,9 +85,6 @@
-
-
-
@@ -101,6 +93,9 @@
property.deposit.list
+
@@ -115,13 +110,6 @@
tree
-
- 批量推送
-
-
- code
- action = model.batch_push_deposit()
-
property.deposit.list.search
property.deposit.list
@@ -170,20 +158,15 @@
property.tariff.list
+
+
+
-
-
-
-
-
- 批量推送
-
-
- code
- action = model.batch_push_tariff()
电费列表
@@ -216,20 +199,15 @@
property.water.list
+
+
+
-
-
-
-
-
- 批量推送
-
-
- code
- action = model.batch_push_water()
水费列表
@@ -245,12 +223,14 @@
property.management.list
+
+
+
-
-
-
@@ -270,13 +250,6 @@
-
- 批量推送
-
-
- code
- action = model.batch_push_management()
-
管理费列表
property.management.list
diff --git a/yuthon_property_approval/wizard/binding_information_wizard.py b/yuthon_property_approval/wizard/binding_information_wizard.py
index d5c55b82d..bb37036f1 100644
--- a/yuthon_property_approval/wizard/binding_information_wizard.py
+++ b/yuthon_property_approval/wizard/binding_information_wizard.py
@@ -1,4 +1,5 @@
from odoo import models, fields, api, _, SUPERUSER_ID
+from odoo.exceptions import UserError, ValidationError
class BindingInformationWizard(models.Model):
@@ -77,32 +78,52 @@ class BindingInformationWizard(models.Model):
record.available_contract_ids = [(6, 0, contract_ids)] if contract_ids else [(5,)]
def confirm(self):
- bank_ids = self.env['property.bank.statements'].search([('name', '=', self.bank_id.name)])
- for bank_id in bank_ids:
- if self.property_ids:
- new_properties = self.property_ids - bank_id.property_ids
- if new_properties:
- bank_id.write({
- 'property_ids': [(4, prop.id) for prop in new_properties]
- })
- if self.contract_ids:
- new_contracts = self.contract_ids - bank_id.contract_ids
- if new_contracts:
- bank_id.write({
- 'contract_ids': [(4, cont.id) for cont in new_contracts]
- })
+ if self.bank_id.name:
+ bank_ids = self.env['property.bank.statements'].search([('name', '=', self.bank_id.name)])
+ for bank_id in bank_ids:
+ if self.property_ids:
+ new_properties = self.property_ids - bank_id.property_ids
+ if new_properties:
+ bank_id.write({
+ 'property_ids': [(4, prop.id) for prop in new_properties]
+ })
+ if self.contract_ids:
+ new_contracts = self.contract_ids - bank_id.contract_ids
+ if new_contracts:
+ bank_id.write({
+ 'contract_ids': [(4, cont.id) for cont in new_contracts]
+ })
- # 根据银行账号查找承租方信息
- bank_account = self.env['property.bank.line'].search([
- ('bank', '=', self.bank_id.name)
- ])
- if bank_account.tenant_id:
- # 获取已存在的合同明细行的合同ID
- existing_contract_ids = bank_account.tenant_id.property_contract_ids.mapped('lease_contract_id.id')
- # 过滤出需要新增的合同(排除已存在的)
- new_contracts = self.contract_ids.filtered(lambda c: c.id not in existing_contract_ids)
- for contract in new_contracts:
- self.env['property.tenant.line'].sudo().create({
- 'tenant_id': bank_account.tenant_id.id,
- 'lease_contract_id': contract.id,
- })
\ No newline at end of file
+ # 根据银行账号查找承租方信息
+ bank_account = self.env['property.bank.line'].search([
+ ('bank', '=', self.bank_id.name)
+ ])
+ if bank_account:
+ # 获取已存在的合同明细行的合同ID
+ existing_contract_ids = bank_account.tenant_id.property_contract_ids.mapped('lease_contract_id.id')
+ # 过滤出需要新增的合同(排除已存在的)
+ new_contracts = self.contract_ids.filtered(lambda c: c.id not in existing_contract_ids)
+ for contract in new_contracts:
+ self.env['property.tenant.line'].sudo().create({
+ 'tenant_id': bank_account.tenant_id.id,
+ 'lease_contract_id': contract.id,
+ })
+ else:
+ tenant = self.env['property.tenant.information'].create({
+ 'name': self.bank_id.name_account,
+ })
+ self.env['property.bank.line'].create({
+ 'bank': self.bank_id.name,
+ 'user': self.bank_id.name_account,
+ 'tenant_id': tenant.id,
+ })
+ existing_contract_ids = tenant.property_contract_ids.mapped('lease_contract_id.id')
+ # 过滤出需要新增的合同(排除已存在的)
+ new_contracts = self.contract_ids.filtered(lambda c: c.id not in existing_contract_ids)
+ for contract in new_contracts:
+ self.env['property.tenant.line'].sudo().create({
+ 'tenant_id': tenant.id,
+ 'lease_contract_id': contract.id,
+ })
+ else:
+ raise UserError('请先输入该户名银行账号,才能绑定')
\ No newline at end of file
From 48b8e50e1a084adac1d12bcc370bf423790dc601 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:15:38 +0800
Subject: [PATCH 2/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/inherit_yuthon_property_views.xml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/yuthon_property_approval/views/inherit_yuthon_property_views.xml b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
index 32bf7d63b..cfd07b941 100644
--- a/yuthon_property_approval/views/inherit_yuthon_property_views.xml
+++ b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
@@ -79,6 +79,11 @@
property.deposit.list
+
+
+
@@ -93,9 +98,6 @@
property.deposit.list
-
From dfd31fb0f67d15c1cda8da0947a581a0e29b786a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:18:58 +0800
Subject: [PATCH 3/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../views/inherit_yuthon_property_views.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/yuthon_property_approval/views/inherit_yuthon_property_views.xml b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
index cfd07b941..cd7f9fbb6 100644
--- a/yuthon_property_approval/views/inherit_yuthon_property_views.xml
+++ b/yuthon_property_approval/views/inherit_yuthon_property_views.xml
@@ -79,7 +79,7 @@
property.deposit.list
-
+
From 30ba6409d216306d9449dc05eadcced66cf0d350 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:36:48 +0800
Subject: [PATCH 4/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index bcc244a7c..3f2a6d629 100644
--- a/.gitignore
+++ b/.gitignore
@@ -144,13 +144,4 @@ dmypy.json
# Cython debug symbols
cython_debug/
-.DS_Store
-
-./.idea
-.idea
-.idea/*
-*.pyc
-.DS_STORE
-.vscode
-venv
-.user.ini
\ No newline at end of file
+.DS_Store
\ No newline at end of file
From 17e837290b3f6847f3e9111ad6751db042dc19c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:37:27 +0800
Subject: [PATCH 5/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 188 +++++++++++++----------------------------------------
1 file changed, 46 insertions(+), 142 deletions(-)
diff --git a/.gitignore b/.gitignore
index 3f2a6d629..11a8ec327 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,147 +1,51 @@
-# Byte-compiled / optimized / DLL files
+# sphinx build directories
+_build/
+
+# dotfiles
+.*
+!.gitignore
+!.github
+!.mailmap
+# compiled python files
+*.py[co]
__pycache__/
-*.py[cod]
-*$py.class
+# setup.py egg_info
+*.egg-info
+# emacs backup files
+*~
+# hg stuff
+*.orig
+status
+# odoo filestore
+odoo/filestore
+# maintenance migration scripts
+odoo/addons/base/maintenance
+# window installation config file
+/odoo.conf
-# C extensions
-*.so
+# generated for windows installer?
+install/win32/*.bat
+install/win32/meta.py
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-./.idea
-.idea
-.idea/*
-*.pyc
-.DS_STORE
-.vscode
-venv
-.user.ini
-MANIFEST
+# needed only when building for win32
+setup/win32/static/less/
+setup/win32/static/wkhtmltopdf/
+setup/win32/static/postgresql*.exe
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
+# js tooling
+node_modules
+jsconfig.json
+tsconfig.json
+package-lock.json
+package.json
+.husky
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-#*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-.pybuilder/
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-# For a library or package, you might want to ignore these files since the code is
-# intended to run in multiple environments; otherwise, check them in:
-# .python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Cython debug symbols
-cython_debug/
-
-.DS_Store
\ No newline at end of file
+# various virtualenv
+/bin/
+/build/
+/dist/
+/include/
+/lib/
+/man/
+/share/
+/src/
From d3fbefdc391b9c59df0b5c8c81096d105cd998fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
<9664676+pengyuthon@user.noreply.gitee.com>
Date: Sun, 7 Sep 2025 17:40:57 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 188 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 142 insertions(+), 46 deletions(-)
diff --git a/.gitignore b/.gitignore
index 11a8ec327..3f2a6d629 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,51 +1,147 @@
-# sphinx build directories
-_build/
-
-# dotfiles
-.*
-!.gitignore
-!.github
-!.mailmap
-# compiled python files
-*.py[co]
+# Byte-compiled / optimized / DLL files
__pycache__/
-# setup.py egg_info
-*.egg-info
-# emacs backup files
-*~
-# hg stuff
-*.orig
-status
-# odoo filestore
-odoo/filestore
-# maintenance migration scripts
-odoo/addons/base/maintenance
-# window installation config file
-/odoo.conf
+*.py[cod]
+*$py.class
-# generated for windows installer?
-install/win32/*.bat
-install/win32/meta.py
+# C extensions
+*.so
-# needed only when building for win32
-setup/win32/static/less/
-setup/win32/static/wkhtmltopdf/
-setup/win32/static/postgresql*.exe
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+./.idea
+.idea
+.idea/*
+*.pyc
+.DS_STORE
+.vscode
+venv
+.user.ini
+MANIFEST
-# js tooling
-node_modules
-jsconfig.json
-tsconfig.json
-package-lock.json
-package.json
-.husky
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
-# various virtualenv
-/bin/
-/build/
-/dist/
-/include/
-/lib/
-/man/
-/share/
-/src/
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.nox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+*.py,cover
+.hypothesis/
+.pytest_cache/
+cover/
+
+# Translations
+*.mo
+#*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+db.sqlite3-journal
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+.pybuilder/
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# IPython
+profile_default/
+ipython_config.py
+
+# pyenv
+# For a library or package, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# .python-version
+
+# pipenv
+# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
+# However, in case of collaboration, if having platform-specific dependencies or dependencies
+# having no cross-platform support, pipenv may install dependencies that don't work, or not
+# install all needed dependencies.
+#Pipfile.lock
+
+# PEP 582; used by e.g. github.com/David-OConnor/pyflow
+__pypackages__/
+
+# Celery stuff
+celerybeat-schedule
+celerybeat.pid
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+.dmypy.json
+dmypy.json
+
+# Pyre type checker
+.pyre/
+
+# pytype static type analyzer
+.pytype/
+
+# Cython debug symbols
+cython_debug/
+
+.DS_Store
\ No newline at end of file