Update deps (Django 2.2)

master
Alice 5 years ago
parent 82bb660cfe
commit ffb97bf194

3
.gitignore vendored

@ -89,3 +89,6 @@ ENV/
.ropeproject .ropeproject
ccvpn/local_settings.py ccvpn/local_settings.py
.vscode/
.venv/

@ -48,13 +48,12 @@ INSTALLED_APPS = (
'constance.backends.database', 'constance.backends.database',
) )
MIDDLEWARE_CLASSES = ( MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.middleware.common.BrokenLinkEmailsMiddleware', 'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',

@ -1,39 +1,37 @@
from django.conf.urls import include, url from django.urls import path, include
from django.contrib import admin from django.contrib import admin
from django.contrib.auth import views as auth_views from django.contrib.auth import views as auth_views
from . import views from lambdainst import views as account_views
from lambdainst import urls as account_urls, views as account_views from . import views
from payments import urls as payments_urls
from tickets import urls as tickets_urls
urlpatterns = [ urlpatterns = [
url(r'^admin/status$', account_views.admin_status, name='admin_status'), path('admin/status', account_views.admin_status, name='admin_status'),
url(r'^admin/referrers$', account_views.admin_ref, name='admin_ref'), path('admin/referrers', account_views.admin_ref, name='admin_ref'),
url(r'^admin/', include(admin.site.urls)), path('admin/', admin.site.urls),
url(r'^api/locations$', account_views.api_locations), path('api/locations', account_views.api_locations),
url(r'^api/auth$', account_views.api_auth), path('api/auth', account_views.api_auth),
url(r'^$', views.index, name='index'), path('', views.index, name='index'),
url(r'^ca.crt$', account_views.ca_crt), path('ca.crt', account_views.ca_crt),
url(r'^setlang$', views.set_lang, name='set_lang'), path('setlang', views.set_lang, name='set_lang'),
url(r'^chat$', views.chat, name='chat'), path('chat', views.chat, name='chat'),
url(r'^page/(?P<name>[a-zA-Z0-9_-]+)$', views.page, name='page'), path('page/<name>', views.page, name='page'),
url(r'^status$', account_views.status), path('status', account_views.status),
url(r'^account/forgot$', auth_views.password_reset, path('account/forgot', auth_views.PasswordResetView.as_view(),
{}, name='password_reset'), {}, name='password_reset'),
url(r'^account/forgot_done$', auth_views.password_reset_done, path('account/forgot_done', auth_views.PasswordResetDoneView.as_view(),
name='password_reset_done'), name='password_reset_done'),
url(r'^account/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', path('account/reset/<uidb64>/<token>/',
auth_views.password_reset_confirm, name='password_reset_confirm'), auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
url(r'^account/reset/done/$', auth_views.password_reset_complete, path('account/reset/done/', auth_views.PasswordResetCompleteView.as_view(),
name='password_reset_complete'), name='password_reset_complete'),
url(r'^account/', include(account_urls, namespace='account')), path('account/', include('lambdainst.urls', namespace='account')),
url(r'^payments/', include(payments_urls, namespace='payments')), path('payments/', include('payments.urls', namespace='payments')),
url(r'^tickets/', include(tickets_urls, namespace='tickets')), path('tickets/', include('tickets.urls', namespace='tickets')),
] ]

@ -1,6 +1,8 @@
import os.path import os.path
import re
import markdown import markdown
from markdown.extensions.codehilite import CodeHiliteExtension
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from django.shortcuts import render from django.shortcuts import render
from django.conf import settings from django.conf import settings
@ -15,7 +17,11 @@ from constance import config
from .common import get_price_float from .common import get_price_float
md = markdown.Markdown(extensions=['toc', 'meta', 'codehilite(noclasses=True)']) md = markdown.Markdown(extensions=[
'markdown.extensions.toc',
'markdown.extensions.meta',
CodeHiliteExtension(noclasses=True),
])
def index(request): def index(request):
@ -24,7 +30,7 @@ def index(request):
def chat(request): def chat(request):
if request.user.is_authenticated(): if request.user.is_authenticated:
username = request.user.username + '|cc' username = request.user.username + '|cc'
else: else:
username = "cc?" username = "cc?"
@ -36,9 +42,9 @@ def set_lang(request):
""" django.views.i18n.set_language() with GET """ """ django.views.i18n.set_language() with GET """
next = request.GET.get('next', request.GET.get('next')) next = request.GET.get('next', request.GET.get('next'))
if not is_safe_url(url=next, host=request.get_host()): if not is_safe_url(url=next, allowed_hosts={request.get_host()}):
next = request.META.get('HTTP_REFERER') next = request.META.get('HTTP_REFERER')
if not is_safe_url(url=next, host=request.get_host()): if not is_safe_url(url=next, allowed_hosts={request.get_host()}):
next = '/' next = '/'
response = http.HttpResponseRedirect(next) response = http.HttpResponseRedirect(next)
lang_code = request.GET.get('lang', None) lang_code = request.GET.get('lang', None)
@ -54,6 +60,9 @@ def set_lang(request):
def page(request, name): def page(request, name):
if not re.match('^[a-z0-9_-]{1,50}$', name):
return HttpResponseNotFound()
basename = settings.PAGES_DIR + '/' + name basename = settings.PAGES_DIR + '/' + name
username = request.user.username username = request.user.username

@ -1,11 +1,12 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import re import re
from django.utils.deprecation import MiddlewareMixin
from django.conf import settings from django.conf import settings
from .models import User from .models import User
class ReferrerMiddleware(): class ReferrerMiddleware(MiddlewareMixin):
def process_request(self, request): def process_request(self, request):
if 'ref' in request.GET: if 'ref' in request.GET:
id = request.GET['ref'] id = request.GET['ref']
@ -42,7 +43,7 @@ class ReferrerMiddleware():
return response return response
class CampaignMiddleware(): class CampaignMiddleware(MiddlewareMixin):
GET_FIELDS = ['pk_campaign', 'utm_campaign', 'utm_medium', 'utm_source'] GET_FIELDS = ['pk_campaign', 'utm_campaign', 'utm_medium', 'utm_source']
def _get_name(self, request): def _get_name(self, request):

@ -26,7 +26,7 @@ class Migration(migrations.Migration):
('free_only', models.BooleanField(default=True)), ('free_only', models.BooleanField(default=True)),
('available', models.BooleanField(default=True)), ('available', models.BooleanField(default=True)),
('comment', models.TextField(blank=True)), ('comment', models.TextField(blank=True)),
('created_by', models.ForeignKey(related_name='created_giftcode_set', null=True, blank=True, to=settings.AUTH_USER_MODEL)), ('created_by', models.ForeignKey(related_name='created_giftcode_set', null=True, blank=True, to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
], ],
options={ options={
'verbose_name_plural': 'Gift Codes', 'verbose_name_plural': 'Gift Codes',
@ -38,8 +38,8 @@ class Migration(migrations.Migration):
fields=[ fields=[
('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)), ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)),
('date', models.DateTimeField(null=True, auto_now_add=True)), ('date', models.DateTimeField(null=True, auto_now_add=True)),
('code', models.ForeignKey(to='lambdainst.GiftCode')), ('code', models.ForeignKey(to='lambdainst.GiftCode', on_delete=models.CASCADE)),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
], ],
options={ options={
'verbose_name_plural': 'Gift Code Users', 'verbose_name_plural': 'Gift Code Users',
@ -58,7 +58,7 @@ class Migration(migrations.Migration):
('last_vpn_auth', models.DateTimeField(null=True, blank=True)), ('last_vpn_auth', models.DateTimeField(null=True, blank=True)),
('referrer_used', models.BooleanField(default=False)), ('referrer_used', models.BooleanField(default=False)),
('referrer', models.ForeignKey(related_name='referrals', null=True, on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL)), ('referrer', models.ForeignKey(related_name='referrals', null=True, on_delete=django.db.models.deletion.SET_NULL, blank=True, to=settings.AUTH_USER_MODEL)),
('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)), ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
], ],
options={ options={
'verbose_name_plural': 'VPN Users', 'verbose_name_plural': 'VPN Users',

@ -158,8 +158,8 @@ class GiftCodeUser(models.Model):
verbose_name = _("Gift Code User") verbose_name = _("Gift Code User")
verbose_name_plural = _("Gift Code Users") verbose_name_plural = _("Gift Code Users")
user = models.ForeignKey(User) user = models.ForeignKey(User, on_delete=models.CASCADE)
code = models.ForeignKey(GiftCode) code = models.ForeignKey(GiftCode, on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True, null=True, blank=True) date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __str__(self): def __str__(self):

@ -1,7 +1,7 @@
import re import re
from django import template from django import template
from django.core.urlresolvers import reverse, NoReverseMatch from django.urls import reverse, NoReverseMatch
register = template.Library() register = template.Library()

@ -1,19 +1,21 @@
from django.conf.urls import url from django.urls import path
from django.contrib.auth import views as auth_views from django.contrib.auth import views as auth_views
from . import views from . import views
app_name = 'lambdainst'
urlpatterns = [ urlpatterns = [
url(r'^login$', auth_views.login, name='login'), path('login', auth_views.LoginView.as_view(), name='login'),
url(r'^discourse_login', views.discourse_login, name='discourse_login'), path('discourse_login', views.discourse_login, name='discourse_login'),
url(r'^logout$', views.logout, name='logout'), path('logout', views.logout, name='logout'),
url(r'^signup$', views.signup, name='signup'), path('signup', views.signup, name='signup'),
url(r'^settings', views.settings), path('settings', views.settings),
url(r'^config_dl', views.config_dl), path('config_dl', views.config_dl),
url(r'^config', views.config), path('config', views.config),
url(r'^logs', views.logs), path('logs', views.logs),
url(r'^gift_code', views.gift_code), path('gift_code', views.gift_code),
url(r'^trial', views.trial), path('trial', views.trial),
url(r'^', views.index, name='index'), path('', views.index, name='index'),
] ]

@ -61,7 +61,7 @@ def logout(request):
def signup(request): def signup(request):
if request.user.is_authenticated(): if request.user.is_authenticated:
return redirect('account:index') return redirect('account:index')
if request.method != 'POST': if request.method != 'POST':

@ -2,7 +2,7 @@ from decimal import Decimal
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse from django.urls import reverse
from constance import config as site_config from constance import config as site_config
from .base import BackendBase from .base import BackendBase

@ -3,7 +3,7 @@ from ipaddress import IPv4Address, IPv4Network
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse from django.urls import reverse
from django.conf import settings as project_settings from django.conf import settings as project_settings
from .base import BackendBase from .base import BackendBase

@ -2,7 +2,7 @@ from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from urllib.parse import urlencode from urllib.parse import urlencode
from urllib.request import urlopen from urllib.request import urlopen
from django.core.urlresolvers import reverse from django.urls import reverse
from django.conf import settings as project_settings from django.conf import settings as project_settings
from .base import BackendBase from .base import BackendBase

@ -1,7 +1,7 @@
import json import json
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse from django.urls import reverse
from .base import BackendBase from .base import BackendBase

@ -44,17 +44,17 @@ class Migration(migrations.Migration):
('last_confirmed_payment', models.DateTimeField(null=True, blank=True)), ('last_confirmed_payment', models.DateTimeField(null=True, blank=True)),
('backend_id', models.CharField(null=True, max_length=64, blank=True)), ('backend_id', models.CharField(null=True, max_length=64, blank=True)),
('backend_data', jsonfield.fields.JSONField(blank=True, default=dict)), ('backend_data', jsonfield.fields.JSONField(blank=True, default=dict)),
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)), ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
], ],
), ),
migrations.AddField( migrations.AddField(
model_name='payment', model_name='payment',
name='recurring_source', name='recurring_source',
field=models.ForeignKey(null=True, to='payments.RecurringPaymentSource', blank=True), field=models.ForeignKey(null=True, to='payments.RecurringPaymentSource', blank=True, on_delete=models.CASCADE),
), ),
migrations.AddField( migrations.AddField(
model_name='payment', model_name='payment',
name='user', name='user',
field=models.ForeignKey(to=settings.AUTH_USER_MODEL), field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.SET_NULL),
), ),
] ]

@ -98,7 +98,7 @@ class Payment(models.Model):
amount = models.IntegerField() amount = models.IntegerField()
paid_amount = models.IntegerField(default=0) paid_amount = models.IntegerField(default=0)
time = models.DurationField() time = models.DurationField()
subscription = models.ForeignKey('Subscription', null=True, blank=True) subscription = models.ForeignKey('Subscription', null=True, blank=True, on_delete=models.CASCADE)
status_message = models.TextField(blank=True, null=True) status_message = models.TextField(blank=True, null=True)
backend_extid = models.CharField(max_length=64, null=True, blank=True) backend_extid = models.CharField(max_length=64, null=True, blank=True)

@ -1,6 +1,8 @@
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
app_name = 'payments'
urlpatterns = [ urlpatterns = [
url(r'^new$', views.new), url(r'^new$', views.new),
url(r'^view/(?P<id>[0-9]+)$', views.view, name='view'), url(r'^view/(?P<id>[0-9]+)$', views.view, name='view'),

@ -1,6 +1,6 @@
from datetime import timedelta from datetime import timedelta
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.core.urlresolvers import reverse from django.urls import reverse
from django.conf import settings from django.conf import settings
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound

157
poetry.lock generated

@ -1,3 +1,17 @@
[[package]]
category = "dev"
description = "An abstract syntax tree for Python with inference support."
name = "astroid"
optional = false
python-versions = ">=3.4.*"
version = "2.2.5"
[package.dependencies]
lazy-object-proxy = "*"
six = "*"
typed-ast = ">=1.3.0"
wrapt = "*"
[[package]] [[package]]
category = "main" category = "main"
description = "Python package for providing Mozilla's CA Bundle." description = "Python package for providing Mozilla's CA Bundle."
@ -14,13 +28,26 @@ optional = false
python-versions = "*" python-versions = "*"
version = "3.0.4" version = "3.0.4"
[[package]]
category = "dev"
description = "Cross-platform colored terminal text."
marker = "sys_platform == \"win32\""
name = "colorama"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.4.1"
[[package]] [[package]]
category = "main" category = "main"
description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
name = "django" name = "django"
optional = false optional = false
python-versions = "*" python-versions = ">=3.5"
version = "1.10" version = "2.2"
[package.dependencies]
pytz = "*"
sqlparse = "*"
[[package]] [[package]]
category = "main" category = "main"
@ -28,7 +55,7 @@ description = "Django live settings with pluggable backends, including Redis."
name = "django-constance" name = "django-constance"
optional = false optional = false
python-versions = "*" python-versions = "*"
version = "2.0.0" version = "2.4.0"
[package.dependencies] [package.dependencies]
django-picklefield = "*" django-picklefield = "*"
@ -39,7 +66,7 @@ description = "Provides a country field for Django models."
name = "django-countries" name = "django-countries"
optional = false optional = false
python-versions = "*" python-versions = "*"
version = "4.0" version = "5.3.3"
[[package]] [[package]]
category = "main" category = "main"
@ -47,7 +74,10 @@ description = "JSONField for django models"
name = "django-jsonfield" name = "django-jsonfield"
optional = false optional = false
python-versions = "*" python-versions = "*"
version = "1.0.0" version = "1.1.0"
[package.dependencies]
Django = ">=1.9"
[[package]] [[package]]
category = "main" category = "main"
@ -56,7 +86,10 @@ marker = "extra == \"database\""
name = "django-picklefield" name = "django-picklefield"
optional = false optional = false
python-versions = "*" python-versions = "*"
version = "1.1.0" version = "2.0"
[package.dependencies]
Django = ">=1.11"
[[package]] [[package]]
category = "main" category = "main"
@ -66,6 +99,22 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.8" version = "2.8"
[[package]]
category = "dev"
description = "A Python utility / library to sort Python imports."
name = "isort"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "4.3.17"
[[package]]
category = "dev"
description = "A fast and thorough lazy object proxy."
name = "lazy-object-proxy"
optional = false
python-versions = "*"
version = "1.3.1"
[[package]] [[package]]
category = "main" category = "main"
description = "lambdacore client api" description = "lambdacore client api"
@ -81,13 +130,25 @@ requests = "*"
reference = "7eae4fa4a670849cc7b2a89bbca01b2b741e77ea" reference = "7eae4fa4a670849cc7b2a89bbca01b2b741e77ea"
type = "git" type = "git"
url = "https://git.packetimpact.net/lvpn/lcoreapi.git" url = "https://git.packetimpact.net/lvpn/lcoreapi.git"
[[package]] [[package]]
category = "main" category = "main"
description = "Python implementation of Markdown." description = "Python implementation of Markdown."
name = "markdown" name = "markdown"
optional = false optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
version = "3.1"
[package.dependencies]
setuptools = ">=36"
[[package]]
category = "dev"
description = "McCabe checker, plugin for flake8"
name = "mccabe"
optional = false
python-versions = "*" python-versions = "*"
version = "2.6" version = "0.6.1"
[[package]] [[package]]
category = "main" category = "main"
@ -97,6 +158,28 @@ optional = false
python-versions = "*" python-versions = "*"
version = "2.4.0" version = "2.4.0"
[[package]]
category = "main"
description = "Pygments is a syntax highlighting package written in Python."
name = "pygments"
optional = false
python-versions = "*"
version = "2.3.1"
[[package]]
category = "dev"
description = "python code static checker"
name = "pylint"
optional = false
python-versions = ">=3.4.*"
version = "2.3.1"
[package.dependencies]
astroid = ">=2.2.0,<3"
colorama = "*"
isort = ">=4.2.5,<5"
mccabe = ">=0.6,<0.7"
[[package]] [[package]]
category = "main" category = "main"
description = "The Swiss Army Knife of the Bitcoin protocol." description = "The Swiss Army Knife of the Bitcoin protocol."
@ -127,6 +210,22 @@ chardet = ">=3.0.2,<3.1.0"
idna = ">=2.5,<2.9" idna = ">=2.5,<2.9"
urllib3 = ">=1.21.1,<1.25" urllib3 = ">=1.21.1,<1.25"
[[package]]
category = "dev"
description = "Python 2 and 3 compatibility utilities"
name = "six"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
version = "1.12.0"
[[package]]
category = "main"
description = "Non-validating SQL parser"
name = "sqlparse"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.3.0"
[[package]] [[package]]
category = "main" category = "main"
description = "Python bindings for the Stripe API" description = "Python bindings for the Stripe API"
@ -140,6 +239,15 @@ version = "2.24.0"
python = ">=3.0" python = ">=3.0"
version = ">=2.20" version = ">=2.20"
[[package]]
category = "dev"
description = "a fork of Python 2 and 3 ast modules with type comment support"
marker = "implementation_name == \"cpython\""
name = "typed-ast"
optional = false
python-versions = "*"
version = "1.3.1"
[[package]] [[package]]
category = "main" category = "main"
description = "HTTP library with thread-safe connection pooling, file post, and more." description = "HTTP library with thread-safe connection pooling, file post, and more."
@ -148,24 +256,43 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4"
version = "1.24.1" version = "1.24.1"
[[package]]
category = "dev"
description = "Module for decorators, wrappers and monkey patching."
name = "wrapt"
optional = false
python-versions = "*"
version = "1.11.1"
[metadata] [metadata]
content-hash = "136a5667e1f62f2a39a4ac1fbea6388f78ca0d9133a9ecae284fddd3c8d15188" content-hash = "3a9661fbb78e1f50d6d7729e8fd239bb456c676699ada309d0a926e8be31adaf"
python-versions = "^3.4" python-versions = "^3.5"
[metadata.hashes] [metadata.hashes]
astroid = ["6560e1e1749f68c64a4b5dee4e091fce798d2f0d84ebe638cf0e0585a343acf4", "b65db1bbaac9f9f4d190199bb8680af6f6f84fd3769a5ea883df8a91fe68b4c4"]
certifi = ["59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", "b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae"] certifi = ["59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", "b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae"]
chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"] chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"]
django = ["46b868d68e5fd69dd9e05a0a7900df91786097e30b2aa6f065dd7fa3b22f7005", "9c60f4a801bf7c26bd6824c1062550c12c373344116703461c18cc258f8c9320"] colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"]
django-constance = ["6eec9f3ac4e5657b93e64f3379181d1e727088df10dd34f0398cd12119b9f0b0", "8e906b084dbfd2ecc9aaa682865314221849718e126d5bc3bff0264ffed4c880"] django = ["7c3543e4fb070d14e10926189a7fcf42ba919263b7473dceaefce34d54e8a119", "a2814bffd1f007805b19194eb0b9a331933b82bd5da1c3ba3d7b7ba16e06dc4b"]
django-countries = ["8762ed8863e818c44619e10ab47a861546f465afe945fd5ddecb6f2ba294a646", "b08bf13f46d05917074662a4222e6a614f7caf40ecccbbbc321a572f1029214f"] django-constance = ["19ff1ae8295aeffc2917ab67da4b310bfaf8c42f34d570f89e289fd54c4217b0", "417f9866a4fcd93c198acd16d5bc22b68e491eaabb18efea4c70d183d42daa45"]
django-jsonfield = ["2280016e6bfe7f0398fbc63539ce688249fe67eaf23756726a493f4e885eb305"] django-countries = ["5307a61172eee5740720e44ea08721858b7d8bf8509ec7701ccd7a8d21120b9a", "e4eaaec9bddb9365365109f833d1fd0ecc0cfee3348bf5441c0ccefb2d6917cd"]
django-picklefield = ["8d1de6be099044ae61e55998b35de18a57499b946fe45781077f5cec4f73f0e0", "ce7fee5c6558fe5dc8924993d994ccde75bb75b91cd82787cbd4c92b95a69f9c"] django-jsonfield = ["25e53eae8bda165721773145ee0f8ae53b746bb3051b32f2821ba84d79aa77ef", "813c52463fbbb548fe0d85bf935d0bf72e933fae2bb00ce3ba27bf69ff6fd2ad", "cacf5a21e7c2490109a60f1122c05aa3858a8dc06952ad764831b4428164fc8e"]
django-picklefield = ["9052f2dcf4882c683ce87b4356f29b4d014c0dad645b6906baf9f09571f52bc8", "f1733a8db1b6046c0d7d738e785f9875aa3c198215de11993463a9339aa4ea24"]
idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"] idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"]
isort = ["01cb7e1ca5e6c5b3f235f0385057f70558b70d2f00320208825fa62887292f43", "268067462aed7eb2a1e237fcb287852f22077de3fb07964e87e00f829eea2d1a"]
lazy-object-proxy = ["0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33", "1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39", "209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019", "27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088", "27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b", "2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e", "2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6", "320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b", "50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5", "5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff", "61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd", "6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7", "7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff", "7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d", "7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2", "7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35", "81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4", "933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514", "94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252", "ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109", "bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f", "cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c", "d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92", "ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577", "e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d", "e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d", "e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f", "eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a", "f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b"]
lcoreapi = [] lcoreapi = []
markdown = ["9d8658d81626c03ee9d9dfcbb516382dd9064e21eeb184dda19ab42b168c8633", "e1c8a489bb7c7154bc5a8c14f0fd1fc356ee36c8b9988f9fd8febff22dd435da"] markdown = ["fc4a6f69a656b8d858d7503bda633f4dd63c2d70cf80abdc6eafa64c4ae8c250", "fe463ff51e679377e3624984c829022e2cfb3be5518726b06f608a07a3aad680"]
mccabe = ["ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", "dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"]
pygal = ["27abab93cbc31e21f3c6bdecc05bda6cd3570cbdbd8297b7caa6904051b50d72", "9204f05380b02a8a32f9bf99d310b51aa2a932cba5b369f7a4dc3705f0a4ce83"] pygal = ["27abab93cbc31e21f3c6bdecc05bda6cd3570cbdbd8297b7caa6904051b50d72", "9204f05380b02a8a32f9bf99d310b51aa2a932cba5b369f7a4dc3705f0a4ce83"]
pygments = ["5ffada19f6203563680669ee7f53b64dabbeb100eb51b61996085e99c03b284a", "e8218dd399a61674745138520d0d4cf2621d7e032439341bc3f647bff125818d"]
pylint = ["5d77031694a5fb97ea95e828c8d10fc770a1df6eb3906067aaed42201a8a6a09", "723e3db49555abaf9bf79dc474c6b9e2935ad82230b10c1138a71ea41ac0fff1"]
python-bitcoinlib = ["0fe7de6c083e12479eb12d3764ece83e5c73b1c48e806009ee1a1aa02da098cf", "4c5ab6d6937086b2964a97182ca04d9a7ecfe9295ab9520f58ac13a1f54e9183"] python-bitcoinlib = ["0fe7de6c083e12479eb12d3764ece83e5c73b1c48e806009ee1a1aa02da098cf", "4c5ab6d6937086b2964a97182ca04d9a7ecfe9295ab9520f58ac13a1f54e9183"]
pytz = ["32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9", "d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c"] pytz = ["32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9", "d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c"]
requests = ["502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", "7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"] requests = ["502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", "7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"]
six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"]
sqlparse = ["40afe6b8d4b1117e7dff5504d7a8ce07d9a1b15aeeade8a2d10f130a834f8177", "7c3dca29c022744e95b547e867cee89f4fce4373f3549ccd8797d8eb52cdb873"]
stripe = ["337149778e544c03d7a69da387b1ada1297c5878891dfa569e482c5433997e80", "3f7eac3b55035071cc0142315aea976cc36dae61525223f0d3030450e9587f76"] stripe = ["337149778e544c03d7a69da387b1ada1297c5878891dfa569e482c5433997e80", "3f7eac3b55035071cc0142315aea976cc36dae61525223f0d3030450e9587f76"]
typed-ast = ["035a54ede6ce1380599b2ce57844c6554666522e376bd111eb940fbc7c3dad23", "037c35f2741ce3a9ac0d55abfcd119133cbd821fffa4461397718287092d9d15", "049feae7e9f180b64efacbdc36b3af64a00393a47be22fa9cb6794e68d4e73d3", "19228f7940beafc1ba21a6e8e070e0b0bfd1457902a3a81709762b8b9039b88d", "2ea681e91e3550a30c2265d2916f40a5f5d89b59469a20f3bad7d07adee0f7a6", "3a6b0a78af298d82323660df5497bcea0f0a4a25a0b003afd0ce5af049bd1f60", "5385da8f3b801014504df0852bf83524599df890387a3c2b17b7caa3d78b1773", "606d8afa07eef77280c2bf84335e24390055b478392e1975f96286d99d0cb424", "69245b5b23bbf7fb242c9f8f08493e9ecd7711f063259aefffaeb90595d62287", "6f6d839ab09830d59b7fa8fb6917023d8cb5498ee1f1dbd82d37db78eb76bc99", "730888475f5ac0e37c1de4bd05eeb799fdb742697867f524dc8a4cd74bcecc23", "9819b5162ffc121b9e334923c685b0d0826154e41dfe70b2ede2ce29034c71d8", "9e60ef9426efab601dd9aa120e4ff560f4461cf8442e9c0a2b92548d52800699", "af5fbdde0690c7da68e841d7fc2632345d570768ea7406a9434446d7b33b0ee1", "b64efdbdf3bbb1377562c179f167f3bf301251411eb5ac77dec6b7d32bcda463", "bac5f444c118aeb456fac1b0b5d14c6a71ea2a42069b09c176f75e9bd4c186f6", "bda9068aafb73859491e13b99b682bd299c1b5fd50644d697533775828a28ee0", "d659517ca116e6750101a1326107d3479028c5191f0ecee3c7203c50f5b915b0", "eddd3fb1f3e0f82e5915a899285a39ee34ce18fd25d89582bc89fc9fb16cd2c6"]
urllib3 = ["61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", "de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"] urllib3 = ["61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", "de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"]
wrapt = ["4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533"]

@ -0,0 +1,84 @@
[MESSAGES CONTROL]
disable=print-statement,
parameter-unpacking,
unpacking-in-except,
old-raise-syntax,
backtick,
long-suffix,
old-ne-operator,
old-octal-literal,
import-star-module-level,
non-ascii-bytes-literal,
raw-checker-failed,
bad-inline-option,
locally-disabled,
file-ignored,
suppressed-message,
useless-suppression,
deprecated-pragma,
use-symbolic-message-instead,
apply-builtin,
basestring-builtin,
buffer-builtin,
cmp-builtin,
coerce-builtin,
execfile-builtin,
file-builtin,
long-builtin,
raw_input-builtin,
reduce-builtin,
standarderror-builtin,
unicode-builtin,
xrange-builtin,
coerce-method,
delslice-method,
getslice-method,
setslice-method,
no-absolute-import,
old-division,
dict-iter-method,
dict-view-method,
next-method-called,
metaclass-assignment,
indexing-exception,
raising-string,
reload-builtin,
oct-method,
hex-method,
nonzero-method,
cmp-method,
input-builtin,
round-builtin,
intern-builtin,
unichr-builtin,
map-builtin-not-iterating,
zip-builtin-not-iterating,
range-builtin-not-iterating,
filter-builtin-not-iterating,
using-cmp-argument,
eq-without-hash,
div-method,
idiv-method,
rdiv-method,
exception-message-attribute,
invalid-str-codec,
sys-max-int,
bad-python3-import,
deprecated-string-function,
deprecated-str-translate-call,
deprecated-itertools-function,
deprecated-types-field,
next-method-defined,
dict-items-not-iterating,
dict-keys-not-iterating,
dict-values-not-iterating,
deprecated-operator-function,
deprecated-urllib-function,
xreadlines-attribute,
deprecated-sys-function,
exception-escape,
comprehension-escape,
missing-docstring,
trailing-newlines

@ -5,20 +5,22 @@ description = ""
authors = ["CCrypto <code@ccrypto.org>"] authors = ["CCrypto <code@ccrypto.org>"]
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.4" python = "^3.5"
django = "=1.10" django = "=2.2"
django-jsonfield = "=1.0" django-jsonfield = "=1.1"
django_countries = "=4.0" django_countries = "=5.3.3"
markdown = "=2.6" markdown = "=3.1"
requests = "^2.21" requests = "^2.21"
pygal = "^2.4" pygal = "^2.4"
pytz = "^2018.9" pytz = "^2018.9"
python-bitcoinlib = "^0.10.1" python-bitcoinlib = "^0.10.1"
stripe = "^2.24" stripe = "^2.24"
django-constance = {version = "=2.0",extras = ["database"]} django-constance = {version = "=2.4",extras = ["database"]}
lcoreapi = {git = "https://git.packetimpact.net/lvpn/lcoreapi.git"} lcoreapi = {git = "https://git.packetimpact.net/lvpn/lcoreapi.git"}
pygments = "^2.3"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pylint = "^2.3"
[build-system] [build-system]
requires = ["poetry>=0.12"] requires = ["poetry>=0.12"]

@ -37,7 +37,7 @@ class Migration(migrations.Migration):
('created', models.DateTimeField(auto_now_add=True)), ('created', models.DateTimeField(auto_now_add=True)),
('message', models.TextField()), ('message', models.TextField()),
('staff_only', models.BooleanField(default=False)), ('staff_only', models.BooleanField(default=False)),
('ticket', models.ForeignKey(related_name='message_set', to='tickets.Ticket')), ('ticket', models.ForeignKey(related_name='message_set', to='tickets.Ticket', on_delete=models.CASCADE)),
('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=django.db.models.deletion.SET_NULL)), ('user', models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=django.db.models.deletion.SET_NULL)),
], ],
), ),

@ -1,7 +1,7 @@
from django.db import models from django.db import models
from django.conf import settings from django.conf import settings
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse from django.urls import reverse
from django.template.loader import get_template from django.template.loader import get_template
from django.template import Context from django.template import Context
from django.core.mail import send_mail from django.core.mail import send_mail

@ -1,14 +1,16 @@
from django.conf.urls import url from django.urls import path
from . import views from . import views
app_name = 'tickets'
urlpatterns = [ urlpatterns = [
url(r'^new$', views.new, name='new'), path('new', views.new, name='new'),
url(r'^view/(?P<id>[0-9]+)$', views.view, name='view'), path('view/<id>', views.view, name='view'),
url(r'^$', views.index, name='index'), path('', views.index, name='index'),
url(r'^open$', views.index, dict(f='open'), name='index_open'), path('open', views.index, dict(f='open'), name='index_open'),
url(r'^closed$', views.index, dict(f='closed'), name='index_closed'), path('closed', views.index, dict(f='closed'), name='index_closed'),
url(r'^all_open$', views.index, dict(f='open', all=True), name='index_open_all'), path('all_open', views.index, dict(f='open', all=True), name='index_open_all'),
url(r'^all_closed$', views.index, dict(f='closed', all=True), name='index_closed_all'), path('all_closed', views.index, dict(f='closed', all=True), name='index_closed_all'),
] ]

Loading…
Cancel
Save