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 gvacommon
========= =========
This module contains code that is intended to be shared between gnuviechadmin This module contains code that is intended to be shared between gnuviechadmin
components. 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 # 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 # 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 # 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 # 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/>. # 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 # 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 # 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 # 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 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. Get a setting from an environment variable.
@ -30,7 +30,9 @@ def get_env_variable(var_name):
:rtype: str :rtype: str
""" """
try: try:
return environ[var_name] return type(environ[var_name])
except KeyError: except KeyError:
if default is not None:
return default
error_msg = "Set the %s environment variable" % var_name error_msg = "Set the %s environment variable" % var_name
raise ImproperlyConfigured(error_msg) raise ImproperlyConfigured(error_msg)

View file

@ -1,6 +1,6 @@
# #
# gvacommon - common parts of gnuviechadmin # 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 # 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 # it under the terms of the GNU Affero General Public License as published by
@ -19,8 +19,6 @@
Tests for gvacommon celery router code. Tests for gvacommon celery router code.
""" """
from __future__ import absolute_import, unicode_literals
import unittest import unittest
from gvacommon.celeryrouters import GvaRouter from gvacommon.celeryrouters import GvaRouter

View file

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
# gvacommon - common parts of gnuviechadmin # 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 # 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 # 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') get_env_variable('missingvariable')
self.assertEqual( self.assertEqual(
str(e.exception), 'Set the missingvariable environment variable') 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 # 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 # 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 # it under the terms of the GNU Affero General Public License as published by
@ -19,23 +19,16 @@
Tests for gvacommon code. Tests for gvacommon code.
""" """
from __future__ import absolute_import, unicode_literals
import unittest import unittest
from unittest.mock import MagicMock
try:
from unittest.Mock import MagicMock
except ImportError:
from mock import MagicMock
import django import django
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import connection from django.db import connection
from django.http import HttpResponseForbidden from django.http import HttpResponseForbidden
from django.conf import settings
from django.views.generic import View from django.views.generic import View
from django.contrib.auth import get_user_model
if not settings.configured: if not settings.configured:
settings.configure( settings.configure(
DEBUG=True, DEBUG=True,

View file

@ -35,8 +35,8 @@ class StaffOrSelfLoginRequiredMixin(LoginRequiredMixin):
def dispatch(self, request, *args, **kwargs): def dispatch(self, request, *args, **kwargs):
if ( if (
request.user.is_staff or request.user.is_staff or
request.user == self.get_customer_object() request.user == self.get_customer_object()
): ):
return super(StaffOrSelfLoginRequiredMixin, self).dispatch( return super(StaffOrSelfLoginRequiredMixin, self).dispatch(
request, *args, **kwargs 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 # 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 # 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 # it under the terms of the GNU Affero General Public License as published by