Port to Python 3, use pipenv, add defaults to get_env_variable

This commit is contained in:
Jan Dittberner 2018-11-17 13:31:16 +01:00
parent 321edba5f7
commit 8ba50c4fef
13 changed files with 130 additions and 31 deletions

13
Pipfile Normal file
View file

@ -0,0 +1,13 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
django = "*"
[dev-packages]
coverage = "*"
[requires]
python_version = "3.6"

74
Pipfile.lock generated Normal file
View file

@ -0,0 +1,74 @@
{
"_meta": {
"hash": {
"sha256": "4f2c26123afdb8df49819165b8514b1bc786124c6079304035cf1171d5da9c22"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.6"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"django": {
"hashes": [
"sha256:1ffab268ada3d5684c05ba7ce776eaeedef360712358d6a6b340ae9f16486916",
"sha256:dd46d87af4c1bf54f4c926c3cfa41dc2b5c15782f15e4329752ce65f5dad1c37"
],
"index": "pypi",
"version": "==2.1.3"
},
"pytz": {
"hashes": [
"sha256:31cb35c89bd7d333cd32c5f278fca91b523b0834369e757f4c5641ea252236ca",
"sha256:8e0f8568c118d3077b46be7d654cc8167fa916092e28320cde048e54bfc9f1e6"
],
"version": "==2018.7"
}
},
"develop": {
"coverage": {
"hashes": [
"sha256:09e47c529ff77bf042ecfe858fb55c3e3eb97aac2c87f0349ab5a7efd6b3939f",
"sha256:0a1f9b0eb3aa15c990c328535655847b3420231af299386cfe5efc98f9c250fe",
"sha256:0cc941b37b8c2ececfed341444a456912e740ecf515d560de58b9a76562d966d",
"sha256:10e8af18d1315de936d67775d3a814cc81d0747a1a0312d84e27ae5610e313b0",
"sha256:1b4276550b86caa60606bd3572b52769860a81a70754a54acc8ba789ce74d607",
"sha256:1e8a2627c48266c7b813975335cfdea58c706fe36f607c97d9392e61502dc79d",
"sha256:2b224052bfd801beb7478b03e8a66f3f25ea56ea488922e98903914ac9ac930b",
"sha256:447c450a093766744ab53bf1e7063ec82866f27bcb4f4c907da25ad293bba7e3",
"sha256:46101fc20c6f6568561cdd15a54018bb42980954b79aa46da8ae6f008066a30e",
"sha256:4710dc676bb4b779c4361b54eb308bc84d64a2fa3d78e5f7228921eccce5d815",
"sha256:510986f9a280cd05189b42eee2b69fecdf5bf9651d4cd315ea21d24a964a3c36",
"sha256:5535dda5739257effef56e49a1c51c71f1d37a6e5607bb25a5eee507c59580d1",
"sha256:5a7524042014642b39b1fcae85fb37556c200e64ec90824ae9ecf7b667ccfc14",
"sha256:5f55028169ef85e1fa8e4b8b1b91c0b3b0fa3297c4fb22990d46ff01d22c2d6c",
"sha256:6694d5573e7790a0e8d3d177d7a416ca5f5c150742ee703f3c18df76260de794",
"sha256:6831e1ac20ac52634da606b658b0b2712d26984999c9d93f0c6e59fe62ca741b",
"sha256:77f0d9fa5e10d03aa4528436e33423bfa3718b86c646615f04616294c935f840",
"sha256:828ad813c7cdc2e71dcf141912c685bfe4b548c0e6d9540db6418b807c345ddd",
"sha256:85a06c61598b14b015d4df233d249cd5abfa61084ef5b9f64a48e997fd829a82",
"sha256:8cb4febad0f0b26c6f62e1628f2053954ad2c555d67660f28dfb1b0496711952",
"sha256:a5c58664b23b248b16b96253880b2868fb34358911400a7ba39d7f6399935389",
"sha256:aaa0f296e503cda4bc07566f592cd7a28779d433f3a23c48082af425d6d5a78f",
"sha256:ab235d9fe64833f12d1334d29b558aacedfbca2356dfb9691f2d0d38a8a7bfb4",
"sha256:b3b0c8f660fae65eac74fbf003f3103769b90012ae7a460863010539bb7a80da",
"sha256:bab8e6d510d2ea0f1d14f12642e3f35cefa47a9b2e4c7cea1852b52bc9c49647",
"sha256:c45297bbdbc8bb79b02cf41417d63352b70bcb76f1bbb1ee7d47b3e89e42f95d",
"sha256:d19bca47c8a01b92640c614a9147b081a1974f69168ecd494687c827109e8f42",
"sha256:d64b4340a0c488a9e79b66ec9f9d77d02b99b772c8b8afd46c1294c1d39ca478",
"sha256:da969da069a82bbb5300b59161d8d7c8d423bc4ccd3b410a9b4d8932aeefc14b",
"sha256:ed02c7539705696ecb7dc9d476d861f3904a8d2b7e894bd418994920935d36bb",
"sha256:ee5b8abc35b549012e03a7b1e86c09491457dba6c94112a2482b18589cc2bdb9"
],
"index": "pypi",
"version": "==4.5.2"
}
}
}

View file

@ -1,5 +1,20 @@
=========
gvacommon
=========
This module contains code that is intended to be shared between gnuviechadmin
components.
Install dependencies
====================
.. code-block::
pipenv install --dev
Run tests
=========
.. code-block::
pipenv run coverage run --branch setup.py test

View file

@ -1,6 +1,6 @@
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2015-2016 Jan Dittberner
# Copyright (C) 2015-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -15,4 +15,4 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
__version__ = '0.3.1'
__version__ = '0.4.0'

View file

@ -1,6 +1,6 @@
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2016 Jan Dittberner
# Copyright (C) 2016-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -20,7 +20,7 @@ from django.core.exceptions import ImproperlyConfigured
from os import environ
def get_env_variable(var_name):
def get_env_variable(var_name, type=str, default=None):
"""
Get a setting from an environment variable.
@ -30,7 +30,9 @@ def get_env_variable(var_name):
:rtype: str
"""
try:
return environ[var_name]
return type(environ[var_name])
except KeyError:
if default is not None:
return default
error_msg = "Set the %s environment variable" % var_name
raise ImproperlyConfigured(error_msg)

View file

@ -1,6 +1,6 @@
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2014-2016 Jan Dittberner
# Copyright (C) 2014-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -19,8 +19,6 @@
Tests for gvacommon celery router code.
"""
from __future__ import absolute_import, unicode_literals
import unittest
from gvacommon.celeryrouters import GvaRouter

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2016 Jan Dittberner
# Copyright (C) 2016-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -38,3 +38,15 @@ class GetEnvVariableTest(TestCase):
get_env_variable('missingvariable')
self.assertEqual(
str(e.exception), 'Set the missingvariable environment variable')
def test_typed_variable(self):
os.environ['testvariable'] = '42'
self.assertEqual(get_env_variable('testvariable'), '42')
self.assertEqual(get_env_variable('testvariable', int), 42)
self.assertIsInstance(get_env_variable('testvariable', int), int)
def test_get_default_for_missing_variable(self):
if 'missingvariable' in os.environ:
del os.environ['missingvariable']
self.assertEqual(get_env_variable(
'missingvariable', default='test'), 'test')

View file

@ -1,6 +1,6 @@
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2014-2016 Jan Dittberner
# Copyright (C) 2014-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@ -19,23 +19,16 @@
Tests for gvacommon code.
"""
from __future__ import absolute_import, unicode_literals
import unittest
try:
from unittest.Mock import MagicMock
except ImportError:
from mock import MagicMock
from unittest.mock import MagicMock
import django
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import connection
from django.http import HttpResponseForbidden
from django.conf import settings
from django.views.generic import View
from django.contrib.auth import get_user_model
if not settings.configured:
settings.configure(
DEBUG=True,

View file

@ -35,8 +35,8 @@ class StaffOrSelfLoginRequiredMixin(LoginRequiredMixin):
def dispatch(self, request, *args, **kwargs):
if (
request.user.is_staff or
request.user == self.get_customer_object()
request.user.is_staff or
request.user == self.get_customer_object()
):
return super(StaffOrSelfLoginRequiredMixin, self).dispatch(
request, *args, **kwargs

View file

@ -1,3 +0,0 @@
# This file is here because many Platforms as a Service look for
# requirements.txt in the root directory of a project.
-r requirements/base.txt

View file

@ -1 +0,0 @@
Django>=1.9.2,<2

View file

@ -1,4 +0,0 @@
# Test dependencies go here.
-r base.txt
coverage==4.0.3
mock==1.3.0

View file

@ -1,6 +1,6 @@
#
# gvacommon - common parts of gnuviechadmin
# Copyright (C) 2016 Jan Dittberner
# Copyright (C) 2016-2018 Jan Dittberner
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by