Skip to content
Snippets Groups Projects
Verified Commit 681f0308 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch 'master' into 114-migrate-to-materialize-css

parents 3b67740b 11e1bca0
No related branches found
No related tags found
1 merge request!85Resolve "Migrate to materialize-css"
Pipeline #441 failed
from django.conf import settings
from django.core import management
from django_cron import CronJobBase, Schedule
class Backup(CronJobBase):
RUN_AT_TIMES = settings.DBBACKUP_CRON_TIMES
RETRY_AFTER_FAILURE_MINS = 5
schedule = Schedule(
run_at_times=RUN_AT_TIMES, retry_after_failure_mins=RETRY_AFTER_FAILURE_MINS
)
code = "biscuit.core.Backup"
def do(self):
management.call_command("dbbackup", "-z")
management.call_command("mediabackup", "-z")
......@@ -122,7 +122,6 @@ MENUS = {
"FOOTER_MENU_CORE": [
{"name": _("Website"), "url": "https://biscuit.edugit.org/"},
{"name": "Teckids e.V.", "url": "https://www.teckids.org/"},
],
"DATA_MANAGEMENT_MENU": [],
"SCHOOL_MANAGEMENT_MENU": [
......
......@@ -53,9 +53,7 @@ INSTALLED_APPS = [
"settings_context_processor",
"sass_processor",
"easyaudit",
"dbbackup",
"dbsettings",
"django_cron",
"bootstrap4",
"django_any_js",
"django_yarnpkg",
......@@ -255,8 +253,8 @@ SELECT2_I18N_PATH = JS_URL + "/select2/dist/js/i18n"
ANY_JS = {
"DataTables": {"js_url": JS_URL + "/datatables/media/js/jquery.dataTables.min.js"},
"DataTables-Bootstrap4": {
"css_url": JS_URL + "/datatables/media/css/dataTables.bootstrap4.min.css",
"js_url": JS_URL + "/datatables/media/js/dataTables.bootstrap4.min.js",
"css_url": JS_URL + "/datatables/media/css/jquery.dataTables.min.css",
"js_url": JS_URL + "/datatables/media/js/jquery.dataTables.min.js",
},
}
......@@ -298,14 +296,6 @@ IMPERSONATE = {"USE_HTTP_REFERER": True, "REQUIRE_SUPERUSER": True, "ALLOW_SUPER
DJANGO_TABLES2_TEMPLATE = "django_tables2/bootstrap4.html"
DBBACKUP_STORAGE = _settings.get("backup.storage", "django.core.files.storage.FileSystemStorage")
DBBACKUP_STORAGE_OPTIONS = {"location": _settings.get("backup.location", "/var/backups/biscuit")}
DBBACKUP_CLEANUP_KEEP = _settings.get("backup.keep.database", 10)
DBBACKUP_CLEANUP_KEEP_MEDIA = _settings.get("backup.keep.media", 10)
DBBACKUP_CRON_TIMES = _settings.get("backup.times", None) or ["03:57"]
CRON_CLASSES = ["biscuit.core.cronjobs.Backup"]
ANONYMIZE_ENABLED = _settings.get("maintenance.anonymisable", True)
LOGIN_URL = "two_factor:login"
......
......@@ -64,25 +64,4 @@ $(document).ready( function () {
"paging": false
});
});
$('*:not(a, span)[data-poload]').each(function() {
$(this).find('a, span').attr('data-poload', $(this).attr('data-poload'));
$(this).removeAttr('data-poload');
});
$('*[data-poload]').popover({
html: true,
animation: true,
placement: 'auto',
contianer: 'body',
trigger: 'hover'
}).on("inserted.bs.popover", function() {
var trigger_el = $(this);
var popover_id = trigger_el.attr("aria-describedby");
var popover_el = $('#' + popover_id);
$.get(trigger_el.data('poload'), function(d) {
popover_el.html(d);
});
});
});
{# -*- engine:django -*- #}
{% load static cropping %}
<div class="card shadow">
<div class="card-header">{{ person.first_name }} {{ person.last_name }}</div>
<div class="card-body">
<div class="row no-gutters">
<div class="col-sm">
{% if person.photo %}
<img class="person-img" src="{% cropped_thumbnail person 'photo_cropping' max_size='300x400' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
{% else %}
<img class="person-img" src="{% static 'img/fallback.png' %}" alt="{{ person.first_name }} {{ person.last_name }}" />
{% endif %}
</div>
<div class="col-sm">
<p class="card-text">{{ person.date_of_birth|date }}</p>
</div>
</div>
</div>
</div>
......@@ -62,23 +62,4 @@
</div>
</div>
</div>
{# Backup cron jobs #}
<div class="card">
<div class="card-content">
<span class="card-title">{% blocktrans %}Recent backup cron jobs{% endblocktrans %}</span>
<ul class="collection">
{% for backup in backups %}
<li class="collection-item">
{% if backup.is_success %}
<i class="material-icons green-text right">check_circle</i>
{% else %}
<i class="material-icons red-text right">error</i>
{% endif %}
<span class="title">{{ backup.end_time }}</span>
</li>
{% endfor %}
</ul>
</div>
{% endblock %}
......@@ -22,12 +22,11 @@ urlpatterns = [
path("persons", views.persons, name="persons"),
path("persons/accounts", views.persons_accounts, name="persons_accounts"),
path("person", views.person, name="person"),
path("person/<int:id_>", views.person, {"template": "full"}, name="person_by_id"),
path("person/<int:id_>/card", views.person, {"template": "card"}, name="person_by_id_card"),
path("person/<int:id_>", views.person, name="person_by_id"),
path("person/<int:id_>/edit", views.edit_person, name="edit_person_by_id"),
path("groups", views.groups, name="groups"),
path("group/create", views.edit_group, name="create_group"),
path("group/<int:id_>", views.group, {"template": "full"}, name="group_by_id"),
path("group/<int:id_>", views.group, name="group_by_id"),
path("group/<int:id_>/edit", views.edit_group, name="edit_group_by_id"),
path("", views.index, name="index"),
path("maintenance-mode/", include("maintenance_mode.urls")),
......
......@@ -5,7 +5,6 @@ from django.http import Http404, HttpRequest, HttpResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.translation import ugettext_lazy as _
from django_cron.models import CronJobLog
from django_tables2 import RequestConfig
from .decorators import admin_required
......@@ -42,7 +41,7 @@ def persons(request: HttpRequest) -> HttpResponse:
@login_required
def person(request: HttpRequest, id_: int, template: str) -> HttpResponse:
def person(request: HttpRequest, id_: int) -> HttpResponse:
context = {}
# Get person and check access
......@@ -62,11 +61,11 @@ def person(request: HttpRequest, id_: int, template: str) -> HttpResponse:
RequestConfig(request).configure(groups_table)
context["groups_table"] = groups_table
return render(request, "core/person_%s.html" % template, context)
return render(request, "core/person_full.html", context)
@login_required
def group(request: HttpRequest, id_: int, template: str) -> HttpResponse:
def group(request: HttpRequest, id_: int) -> HttpResponse:
context = {}
# Get group and check if it exist
......@@ -97,7 +96,7 @@ def group(request: HttpRequest, id_: int, template: str) -> HttpResponse:
RequestConfig(request).configure(owners_table)
context["owners_table"] = owners_table
return render(request, "core/group_%s.html" % template, context)
return render(request, "core/group_full.html", context)
@login_required
......@@ -187,10 +186,6 @@ def data_management(request: HttpRequest) -> HttpResponse:
def system_status(request: HttpRequest) -> HttpResponse:
context = {}
context["backups"] = CronJobLog.objects.filter(code="biscuit.core.Backup").order_by(
"-end_time"
)[:10]
return render(request, "core/system_status.html", context)
......
......@@ -9,10 +9,11 @@ case "$1" in
set -e
cd "$(dirname "$0")"
remove_pip_metadata
poetry lock
poetry install
for d in apps/official/*; do
remove_pip_metadata
poetry run sh -c "cd $d; poetry install"
poetry run sh -c "cd $d; poetry lock; poetry install"
done
remove_pip_metadata
poetry run ./manage.py compilemessages
......
......@@ -81,7 +81,7 @@ development server against a local PostgreSQL database with password
:alt: Screenshot of index page
After installing the development environment with default settings,
you should see the index page with the BOotstrap style.
you should see the index page with the Bootstrap style.
.. _Poetry: https://poetry.eustace.io/
.. _Poetry installation methods: https://poetry.eustace.io/docs/#installation
......
......@@ -14,6 +14,17 @@ optional = false
python-versions = "*"
version = "1.4.3"
[[package]]
category = "main"
description = "ASGI specs, helper code, and adapters"
name = "asgiref"
optional = false
python-versions = "*"
version = "3.2.3"
[package.extras]
tests = ["pytest (>=4.3.0,<4.4.0)", "pytest-asyncio (>=0.10.0,<0.11.0)"]
[[package]]
category = "dev"
description = "Atomic file writes."
......@@ -43,7 +54,7 @@ description = "Internationalization utilities"
name = "babel"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.7.0"
version = "2.8.0"
[package.dependencies]
pytz = ">=2015.7"
......@@ -174,12 +185,13 @@ category = "main"
description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
name = "django"
optional = false
python-versions = ">=3.5"
version = "2.2.9"
python-versions = ">=3.6"
version = "3.0.2"
[package.dependencies]
asgiref = ">=3.2,<4.0"
pytz = "*"
sqlparse = "*"
sqlparse = ">=0.2.2"
[package.extras]
argon2 = ["argon2-cffi (>=16.1.0)"]
......@@ -242,42 +254,6 @@ version = "2.2.0"
[package.dependencies]
Django = ">=1.8"
[[package]]
category = "main"
description = "Common things every Django app needs!"
name = "django-common-helpers"
optional = false
python-versions = "*"
version = "0.9.2"
[package.dependencies]
Django = ">=1.8.0"
[[package]]
category = "main"
description = "Running python crons in a Django project"
name = "django-cron"
optional = false
python-versions = "*"
version = "0.5.1"
[package.dependencies]
Django = ">=1.8.0"
django-common-helpers = ">=0.6.4"
[[package]]
category = "main"
description = "Management commands to help backup and restore a project database and media"
name = "django-dbbackup"
optional = false
python-versions = "*"
version = "3.2.0"
[package.dependencies]
Django = ">=1.5"
pytz = "*"
six = "*"
[[package]]
category = "main"
description = "Application settings whose values can be updated while a project is up and running."
......@@ -304,7 +280,10 @@ description = "Yet another Django audit log app, hopefully the simplest one."
name = "django-easy-audit"
optional = false
python-versions = "*"
version = "1.1.1"
version = "1.2rc1"
[package.dependencies]
beautifulsoup4 = "*"
[[package]]
category = "main"
......@@ -451,10 +430,11 @@ description = "SASS processor to compile SCSS files into *.css, while rendering,
name = "django-sass-processor"
optional = false
python-versions = "*"
version = "0.7.5"
version = "0.8"
[package.extras]
dev = ["libsass (>=0.13)"]
management-command = ["django-compressor (>=2.4)"]
[[package]]
category = "main"
......@@ -976,8 +956,8 @@ category = "main"
description = "Python Imaging Library (Fork)"
name = "pillow"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "6.2.1"
python-versions = ">=3.5"
version = "7.0.0"
[[package]]
category = "dev"
......@@ -1576,7 +1556,7 @@ description = "Fast, Extensible Progress Meter"
name = "tqdm"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
version = "4.41.0"
version = "4.41.1"
[package.extras]
dev = ["py-make (>=0.1.0)", "twine", "argopt", "pydoc-markdown"]
......@@ -1633,7 +1613,7 @@ description = "Measures number of Terminal column cells of wide-character codes"
name = "wcwidth"
optional = false
python-versions = "*"
version = "0.1.7"
version = "0.1.8"
[[package]]
category = "main"
......@@ -1672,7 +1652,7 @@ app-untis = []
ldap = ["django-auth-ldap"]
[metadata]
content-hash = "56c6c6c7ce13bd1e1b7dbafdca5eefe80c9936442158adc743f961f74ca2fb73"
content-hash = "9e4dda5cc59668f75b50cc22768e9980b8adfed7c14d633f5fadf75d19ae29fa"
python-versions = "^3.7"
[metadata.files]
......@@ -1684,6 +1664,10 @@ appdirs = [
{file = "appdirs-1.4.3-py2.py3-none-any.whl", hash = "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"},
{file = "appdirs-1.4.3.tar.gz", hash = "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92"},
]
asgiref = [
{file = "asgiref-3.2.3-py2.py3-none-any.whl", hash = "sha256:ea448f92fc35a0ef4b1508f53a04c4670255a3f33d22a81c8fc9c872036adbe5"},
{file = "asgiref-3.2.3.tar.gz", hash = "sha256:7e06d934a7718bf3975acbf87780ba678957b87c7adc056f13b6215d610695a0"},
]
atomicwrites = [
{file = "atomicwrites-1.3.0-py2.py3-none-any.whl", hash = "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4"},
{file = "atomicwrites-1.3.0.tar.gz", hash = "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"},
......@@ -1693,8 +1677,8 @@ attrs = [
{file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"},
]
babel = [
{file = "Babel-2.7.0-py2.py3-none-any.whl", hash = "sha256:af92e6106cb7c55286b25b38ad7695f8b4efb36a90ba483d7f7a6628c46158ab"},
{file = "Babel-2.7.0.tar.gz", hash = "sha256:e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28"},
{file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"},
{file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"},
]
bandit = [
{file = "bandit-1.6.2-py2.py3-none-any.whl", hash = "sha256:336620e220cf2d3115877685e264477ff9d9abaeb0afe3dc7264f55fa17a3952"},
......@@ -1770,8 +1754,8 @@ dj-database-url = [
{file = "dj_database_url-0.5.0-py2.py3-none-any.whl", hash = "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9"},
]
django = [
{file = "Django-2.2.9-py3-none-any.whl", hash = "sha256:687c37153486cf26c3fdcbdd177ef16de38dc3463f094b5f9c9955d91f277b14"},
{file = "Django-2.2.9.tar.gz", hash = "sha256:662a1ff78792e3fd77f16f71b1f31149489434de4b62a74895bd5d6534e635a5"},
{file = "Django-3.0.2-py3-none-any.whl", hash = "sha256:4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a"},
{file = "Django-3.0.2.tar.gz", hash = "sha256:8c3575f81e11390893860d97e1e0154c47512f180ea55bd84ce8fa69ba8051ca"},
]
django-any-js = [
{file = "django-any-js-1.0.3.post0.tar.gz", hash = "sha256:1da88b44b861b0f54f6b8ea0eb4c7c4fa1a5772e9a4320532cd4e0871a4e23f7"},
......@@ -1792,15 +1776,6 @@ django-bulk-update = [
{file = "django-bulk-update-2.2.0.tar.gz", hash = "sha256:5ab7ce8a65eac26d19143cc189c0f041d5c03b9d1b290ca240dc4f3d6aaeb337"},
{file = "django_bulk_update-2.2.0-py2.py3-none-any.whl", hash = "sha256:49a403392ae05ea872494d74fb3dfa3515f8df5c07cc277c3dc94724c0ee6985"},
]
django-common-helpers = [
{file = "django-common-helpers-0.9.2.tar.gz", hash = "sha256:2d56be6fa261d829a6a224f189bf276267b9082a17d613fe5f015dd4d65c17b4"},
]
django-cron = [
{file = "django-cron-0.5.1.tar.gz", hash = "sha256:08d22708c8b2ecab8cda989019a66c7e1e2424c59d822796fd45abf7731d261d"},
]
django-dbbackup = [
{file = "django-dbbackup-3.2.0.tar.gz", hash = "sha256:9470e5d8bdaee4feb878b1b66c59eb9b27a131cccd648bf7cbfe70930acd4fc0"},
]
django-dbsettings = [
{file = "django-dbsettings-1.0.0.tar.gz", hash = "sha256:42b04dffd3bc90d91718c822f1e0212d9368e8efe340f7ef09517b5fb1cf49f5"},
]
......@@ -1809,8 +1784,8 @@ django-debug-toolbar = [
{file = "django_debug_toolbar-2.1-py3-none-any.whl", hash = "sha256:77cfba1d6e91b9bc3d36dc7dc74a9bb80be351948db5f880f2562a0cbf20b6c5"},
]
django-easy-audit = [
{file = "django-easy-audit-1.1.1.tar.gz", hash = "sha256:4b40a30599fe721eb0a9946f5023254fa0904d531c9f4adb23ee52601efaf89b"},
{file = "django_easy_audit-1.1.1-py2.py3-none-any.whl", hash = "sha256:1c5d5e6d6a33f50f696ed53cdaf51de0a4ae2f110ef8c41b33bc139b737729a6"},
{file = "django-easy-audit-1.2rc1.tar.gz", hash = "sha256:80f82fa4006290dcd6589a345e75de1c780de49d38218050eedd9048c54b647d"},
{file = "django_easy_audit-1.2rc1-py3-none-any.whl", hash = "sha256:fb9c5ec3e90f0900302448d3648acc11da6d6b3d35d13d77eab917ab8c813d77"},
]
django-formtools = [
{file = "django-formtools-2.2.tar.gz", hash = "sha256:c5272c03c1cd51b2375abf7397a199a3148a9fbbf2f100e186467a84025d13b2"},
......@@ -1856,7 +1831,7 @@ django-phonenumber-field = [
{file = "django_phonenumber_field-3.0.1-py3-none-any.whl", hash = "sha256:1ab19f723928582fed412bd9844221fa4ff466276d8526b8b4a9913ee1487c5e"},
]
django-sass-processor = [
{file = "django-sass-processor-0.7.5.tar.gz", hash = "sha256:9267e5fcc7fcde2ec0c7d6ad045b4c6c7e9aea92498ed1725312035a5469b410"},
{file = "django-sass-processor-0.8.tar.gz", hash = "sha256:e039551994feaaba6fcf880412b25a772dd313162a34cbb4289814988cfae340"},
]
django-select2 = [
{file = "django-select2-7.1.2.tar.gz", hash = "sha256:bcd7e5fc920ceee0e63c36372d8e75bd2254d8a37ac67fc16581634766680d30"},
......@@ -2070,36 +2045,28 @@ phonenumbers = [
{file = "phonenumbers-8.11.1.tar.gz", hash = "sha256:239507184ee5b1b83557005af1d5fcce70f83ae18f5dff45b94a67226db10d63"},
]
pillow = [
{file = "Pillow-6.2.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:4ac6148008c169603070c092e81f88738f1a0c511e07bd2bb0f9ef542d375da9"},
{file = "Pillow-6.2.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:4aad1b88933fd6dc2846552b89ad0c74ddbba2f0884e2c162aa368374bf5abab"},
{file = "Pillow-6.2.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c710fcb7ee32f67baf25aa9ffede4795fd5d93b163ce95fdc724383e38c9df96"},
{file = "Pillow-6.2.1-cp27-cp27m-win32.whl", hash = "sha256:e9a3edd5f714229d41057d56ac0f39ad9bdba6767e8c888c951869f0bdd129b0"},
{file = "Pillow-6.2.1-cp27-cp27m-win_amd64.whl", hash = "sha256:b1ae48d87f10d1384e5beecd169c77502fcc04a2c00a4c02b85f0a94b419e5f9"},
{file = "Pillow-6.2.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:a423c2ea001c6265ed28700df056f75e26215fd28c001e93ef4380b0f05f9547"},
{file = "Pillow-6.2.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9f5529fc02009f96ba95bea48870173426879dc19eec49ca8e08cd63ecd82ddb"},
{file = "Pillow-6.2.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:5cc901c2ab9409b4b7ac7b5bcc3e86ac14548627062463da0af3b6b7c555a871"},
{file = "Pillow-6.2.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c6414f6aad598364aaf81068cabb077894eb88fed99c6a65e6e8217bab62ae7a"},
{file = "Pillow-6.2.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:384b12c9aa8ef95558abdcb50aada56d74bc7cc131dd62d28c2d0e4d3aadd573"},
{file = "Pillow-6.2.1-cp35-cp35m-win32.whl", hash = "sha256:248cffc168896982f125f5c13e9317c059f74fffdb4152893339f3be62a01340"},
{file = "Pillow-6.2.1-cp35-cp35m-win_amd64.whl", hash = "sha256:285edafad9bc60d96978ed24d77cdc0b91dace88e5da8c548ba5937c425bca8b"},
{file = "Pillow-6.2.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:846fa202bd7ee0f6215c897a1d33238ef071b50766339186687bd9b7a6d26ac5"},
{file = "Pillow-6.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7ce80c0a65a6ea90ef9c1f63c8593fcd2929448613fc8da0adf3e6bfad669d08"},
{file = "Pillow-6.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e0697b826da6c2472bb6488db4c0a7fa8af0d52fa08833ceb3681358914b14e5"},
{file = "Pillow-6.2.1-cp36-cp36m-win32.whl", hash = "sha256:047d9473cf68af50ac85f8ee5d5f21a60f849bc17d348da7fc85711287a75031"},
{file = "Pillow-6.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:83792cb4e0b5af480588601467c0764242b9a483caea71ef12d22a0d0d6bdce2"},
{file = "Pillow-6.2.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:c9e5ffb910b14f090ac9c38599063e354887a5f6d7e6d26795e916b4514f2c1a"},
{file = "Pillow-6.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4deb1d2a45861ae6f0b12ea0a786a03d19d29edcc7e05775b85ec2877cb54c5e"},
{file = "Pillow-6.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0f66dc6c8a3cc319561a633b6aa82c44107f12594643efa37210d8c924fc1c71"},
{file = "Pillow-6.2.1-cp37-cp37m-win32.whl", hash = "sha256:59aa2c124df72cc75ed72c8d6005c442d4685691a30c55321e00ed915ad1a291"},
{file = "Pillow-6.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6c1db03e8dff7b9f955a0fb9907eb9ca5da75b5ce056c0c93d33100a35050281"},
{file = "Pillow-6.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:12c9169c4e8fe0a7329e8658c7e488001f6b4c8e88740e76292c2b857af2e94c"},
{file = "Pillow-6.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:27faf0552bf8c260a5cee21a76e031acaea68babb64daf7e8f2e2540745082aa"},
{file = "Pillow-6.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:809c19241c14433c5d6135e1b6c72da4e3b56d5c865ad5736ab99af8896b8f41"},
{file = "Pillow-6.2.1-cp38-cp38-win32.whl", hash = "sha256:ac4428094b42907aba5879c7c000d01c8278d451a3b7cccd2103e21f6397ea75"},
{file = "Pillow-6.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:38950b3a707f6cef09cd3cbb142474357ad1a985ceb44d921bdf7b4647b3e13e"},
{file = "Pillow-6.2.1-pp272-pypy_41-win32.whl", hash = "sha256:5a47d2123a9ec86660fe0e8d0ebf0aa6bc6a17edc63f338b73ea20ba11713f12"},
{file = "Pillow-6.2.1-pp372-pp372-win32.whl", hash = "sha256:c7be4b8a09852291c3c48d3c25d1b876d2494a0a674980089ac9d5e0d78bd132"},
{file = "Pillow-6.2.1.tar.gz", hash = "sha256:bf4e972a88f8841d8fdc6db1a75e0f8d763e66e3754b03006cbc3854d89f1cb1"},
{file = "Pillow-7.0.0-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:5f3546ceb08089cedb9e8ff7e3f6a7042bb5b37c2a95d392fb027c3e53a2da00"},
{file = "Pillow-7.0.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:9d2ba4ed13af381233e2d810ff3bab84ef9f18430a9b336ab69eaf3cd24299ff"},
{file = "Pillow-7.0.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:ff3797f2f16bf9d17d53257612da84dd0758db33935777149b3334c01ff68865"},
{file = "Pillow-7.0.0-cp35-cp35m-win32.whl", hash = "sha256:c18f70dc27cc5d236f10e7834236aff60aadc71346a5bc1f4f83a4b3abee6386"},
{file = "Pillow-7.0.0-cp35-cp35m-win_amd64.whl", hash = "sha256:875358310ed7abd5320f21dd97351d62de4929b0426cdb1eaa904b64ac36b435"},
{file = "Pillow-7.0.0-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:ab76e5580b0ed647a8d8d2d2daee170e8e9f8aad225ede314f684e297e3643c2"},
{file = "Pillow-7.0.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a62ec5e13e227399be73303ff301f2865bf68657d15ea50b038d25fc41097317"},
{file = "Pillow-7.0.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8ac6ce7ff3892e5deaab7abaec763538ffd011f74dc1801d93d3c5fc541feee2"},
{file = "Pillow-7.0.0-cp36-cp36m-win32.whl", hash = "sha256:91b710e3353aea6fc758cdb7136d9bbdcb26b53cefe43e2cba953ac3ee1d3313"},
{file = "Pillow-7.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:bf598d2e37cf8edb1a2f26ed3fb255191f5232badea4003c16301cb94ac5bdd0"},
{file = "Pillow-7.0.0-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:5bfef0b1cdde9f33881c913af14e43db69815c7e8df429ceda4c70a5e529210f"},
{file = "Pillow-7.0.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:dc058b7833184970d1248135b8b0ab702e6daa833be14035179f2acb78ff5636"},
{file = "Pillow-7.0.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:c5ed816632204a2fc9486d784d8e0d0ae754347aba99c811458d69fcdfd2a2f9"},
{file = "Pillow-7.0.0-cp37-cp37m-win32.whl", hash = "sha256:54ebae163e8412aff0b9df1e88adab65788f5f5b58e625dc5c7f51eaf14a6837"},
{file = "Pillow-7.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:87269cc6ce1e3dee11f23fa515e4249ae678dbbe2704598a51cee76c52e19cda"},
{file = "Pillow-7.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0a628977ac2e01ca96aaae247ec2bd38e729631ddf2221b4b715446fd45505be"},
{file = "Pillow-7.0.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:62a889aeb0a79e50ecf5af272e9e3c164148f4bd9636cc6bcfa182a52c8b0533"},
{file = "Pillow-7.0.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bf4003aa538af3f4205c5fac56eacaa67a6dd81e454ffd9e9f055fff9f1bc614"},
{file = "Pillow-7.0.0-cp38-cp38-win32.whl", hash = "sha256:7406f5a9b2fd966e79e6abdaf700585a4522e98d6559ce37fc52e5c955fade0a"},
{file = "Pillow-7.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:5f7ae9126d16194f114435ebb79cc536b5682002a4fa57fa7bb2cbcde65f2f4d"},
{file = "Pillow-7.0.0-pp373-pypy36_pp73-win32.whl", hash = "sha256:8453f914f4e5a3d828281a6628cf517832abfa13ff50679a4848926dac7c0358"},
{file = "Pillow-7.0.0.tar.gz", hash = "sha256:4d9ed9a64095e031435af120d3c910148067087541131e82b3e8db302f4c8946"},
]
pluggy = [
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
......@@ -2399,8 +2366,8 @@ toml = [
{file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"},
]
tqdm = [
{file = "tqdm-4.41.0-py2.py3-none-any.whl", hash = "sha256:9036904496bd2afacf836a6f206c5a766ce11d3e9319d54a4e794c0f34b111dc"},
{file = "tqdm-4.41.0.tar.gz", hash = "sha256:166a82cdea964ae45528e0cc89436255ff2be73dc848bdf239f13c501cae5dc7"},
{file = "tqdm-4.41.1-py2.py3-none-any.whl", hash = "sha256:efab950cf7cc1e4d8ee50b2bb9c8e4a89f8307b49e0b2c9cfef3ec4ca26655eb"},
{file = "tqdm-4.41.1.tar.gz", hash = "sha256:4789ccbb6fc122b5a6a85d512e4e41fc5acad77216533a6f2b8ce51e0f265c23"},
]
twilio = [
{file = "twilio-6.35.1.tar.gz", hash = "sha256:c784e55d150ebeb2ba837afbab7168edfb91db57e77a9da49f2a1892688a1930"},
......@@ -2437,8 +2404,7 @@ urllib3 = [
{file = "urllib3-1.25.7.tar.gz", hash = "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"},
]
wcwidth = [
{file = "wcwidth-0.1.7-py2.py3-none-any.whl", hash = "sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c"},
{file = "wcwidth-0.1.7.tar.gz", hash = "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e"},
{file = "wcwidth-0.1.8-py2.py3-none-any.whl", hash = "sha256:8fd29383f539be45b20bd4df0dc29c20ba48654a41e661925e612311e9f3c603"},
]
yubiotp = [
{file = "YubiOTP-0.2.2.post1-py2.py3-none-any.whl", hash = "sha256:7e281801b24678f4bda855ce8ab975a7688a912f5a6cb22b6c2b16263a93cbd2"},
......
......@@ -20,17 +20,17 @@ classifiers = [
[tool.poetry.dependencies]
python = "^3.7"
Django = "^2.2"
Django = "^3.0"
django-any-js = "^1.0"
django-bootstrap4 = "^1.0"
django-debug-toolbar = "^2.0"
django-easy-audit = "^1.1"
django-easy-audit = {version ="^1.2rc1", allow-prereleases = true}
django-middleware-global-request = "^0.1.2"
django-menu-generator = "^1.0.4"
django-tables2 = "^2.1"
Pillow = "^6.1"
Pillow = "^7.0"
django-phonenumber-field = {version = ">=3.0, <5.0", extras = ["phonenumbers"]}
django-sass-processor = "^0.7.3"
django-sass-processor = "^0.8"
libsass = "^0.19.2"
colour = "^0.1.5"
dynaconf = {version = "^2.0", extras = ["yaml", "toml", "ini"]}
......@@ -42,8 +42,6 @@ easy-thumbnails = "^2.6"
django-image-cropping = "^1.2"
django-impersonate = "^1.4"
python-memcached = "^1.59"
django-dbbackup = "^3.2"
django-cron = "^0.5.1"
django-hattori = "^0.2"
psycopg2 = "^2.8"
django_select2 = "^7.1"
......
......@@ -9,9 +9,6 @@ skip_install = true
envdir = {toxworkdir}/globalenv
commands_pre = ./dev.sh install-all
commands =
poetry run python manage.py compilemessages
poetry run python manage.py yarn install
poetry run python manage.py collectstatic --no-input --clear
poetry run pytest --cov=. {posargs} biscuit/ apps/official/
[testenv:selenium]
......@@ -28,7 +25,9 @@ commands =
poetry run flake8 {posargs} biscuit/ apps/official/
[testenv:security]
commands = poetry run safety check --full-report
commands =
poetry show --no-dev
poetry run safety check --full-report
[testenv:build]
commands_pre =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment