Run black on py

This commit is contained in:
2022-04-19 14:25:29 +02:00
parent 13cc531c5d
commit b925af1e7a
13 changed files with 95 additions and 86 deletions

View File

@@ -26,9 +26,7 @@ class Consist(models.Model):
class ConsistItem(models.Model):
consist = models.ForeignKey(
Consist,
on_delete=models.CASCADE,
related_name="consist_item"
Consist, on_delete=models.CASCADE, related_name="consist_item"
)
rolling_stock = models.ForeignKey(RollingStock, on_delete=models.CASCADE)
order = models.PositiveIntegerField(default=0, blank=False, null=False)

View File

@@ -6,23 +6,16 @@ from solo.models import SingletonModel
class DriverConfiguration(SingletonModel):
remote_host = models.GenericIPAddressField(
protocol="IPv4",
default="192.168.4.1"
protocol="IPv4", default="192.168.4.1"
)
remote_port = models.SmallIntegerField(default=2560)
timeout = models.SmallIntegerField(default=250)
network = models.GenericIPAddressField(
protocol="IPv4",
default="192.168.4.0",
blank=True,
null=True
protocol="IPv4", default="192.168.4.0", blank=True, null=True
)
subnet_mask = models.GenericIPAddressField(
protocol="IPv4",
default="255.255.255.0",
blank=True,
null=True
protocol="IPv4", default="255.255.255.0", blank=True, null=True
)
def __str__(self):
@@ -31,8 +24,7 @@ class DriverConfiguration(SingletonModel):
def clean(self, *args, **kwargs):
if self.network:
try:
IPv4Network(
"{0}/{1}".format(self.network, self.subnet_mask))
IPv4Network("{0}/{1}".format(self.network, self.subnet_mask))
except ValueError as e:
raise ValidationError(e)
super().clean(*args, **kwargs)

View File

@@ -7,7 +7,7 @@ from rest_framework.response import Response
from rest_framework.permissions import (
IsAuthenticated,
BasePermission,
SAFE_METHODS
SAFE_METHODS,
)
from ram.parsers import PlainTextParser
@@ -40,16 +40,15 @@ class Firewall(BasePermission):
if not config.network:
return request.method in SAFE_METHODS
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
if x_forwarded_for:
ip = IPv4Address(x_forwarded_for.split(',')[0])
ip = IPv4Address(x_forwarded_for.split(",")[0])
else:
ip = IPv4Address(request.META.get("REMOTE_ADDR"))
network = IPv4Network("{0}/{1}".format(
config.network,
config.subnet_mask
))
network = IPv4Network(
"{0}/{1}".format(config.network, config.subnet_mask)
)
# accept IP configured is settings or localhost
if ip in network or ip in IPv4Network("127.0.0.0/8"):
@@ -101,6 +100,7 @@ class Function(APIView):
"""
Send "Function" commands to a valid DCC address
"""
permission_classes = [IsAuthenticated | Firewall]
def put(self, request, address):
@@ -117,6 +117,7 @@ class Cab(APIView):
"""
Send "Cab" commands to a valid DCC address
"""
permission_classes = [IsAuthenticated | Firewall]
def put(self, request, address):
@@ -132,6 +133,7 @@ class Infra(APIView):
"""
Send "Infra" commands to a valid DCC address
"""
permission_classes = [IsAuthenticated | Firewall]
def put(self, request):
@@ -147,6 +149,7 @@ class Emergency(APIView):
"""
Send an "Emergency" stop, no matter the HTTP method used
"""
permission_classes = [IsAuthenticated | Firewall]
def put(self, request):

View File

@@ -2,5 +2,5 @@ from django.apps import AppConfig
class PortalConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'portal'
default_auto_field = "django.db.models.BigAutoField"
name = "portal"

View File

@@ -7,14 +7,14 @@ from solo.models import SingletonModel
class SiteConfiguration(SingletonModel):
site_name = models.CharField(
max_length=256,
default="Railroad Assets Manager")
max_length=256, default="Railroad Assets Manager"
)
site_author = models.CharField(max_length=256, blank=True)
about = models.TextField(blank=True)
items_per_page = models.CharField(
max_length=2, choices=[
(str(x * 3), str(x * 3)) for x in range(2, 11)],
default='6'
max_length=2,
choices=[(str(x * 3), str(x * 3)) for x in range(2, 11)],
default="6",
)
footer = models.TextField(blank=True)
footer_extended = models.TextField(blank=True)

View File

@@ -9,4 +9,4 @@ register = template.Library()
@register.filter
@stringfilter
def markdown(value):
return md.markdown(value, extensions=['markdown.extensions.fenced_code'])
return md.markdown(value, extensions=["markdown.extensions.fenced_code"])

View File

@@ -3,16 +3,20 @@ from django.urls import path
from portal.views import GetHome, GetHomeFiltered, GetRollingStock
urlpatterns = [
path("", GetHome.as_view(), name='index'),
path("<int:page>", GetHome.as_view(), name='index_pagination'),
path("", GetHome.as_view(), name="index"),
path("<int:page>", GetHome.as_view(), name="index_pagination"),
path(
"search",
GetHomeFiltered.as_view(http_method_names=['post']),
name='index_filtered'
GetHomeFiltered.as_view(http_method_names=["post"]),
name="index_filtered",
),
path("search/<str:search>",
GetHomeFiltered.as_view(), name='index_filtered'),
path("search/<str:search>/<int:page>",
GetHomeFiltered.as_view(), name='index_filtered_pagination'),
path("<uuid:uuid>", GetRollingStock.as_view(), name='rolling_stock'),
path(
"search/<str:search>", GetHomeFiltered.as_view(), name="index_filtered"
),
path(
"search/<str:search>/<int:page>",
GetHomeFiltered.as_view(),
name="index_filtered_pagination",
),
path("<uuid:uuid>", GetRollingStock.as_view(), name="rolling_stock"),
]

View File

@@ -2,5 +2,5 @@ from django.apps import apps
def get_site_conf():
SiteConfiguration = apps.get_model('portal', 'SiteConfiguration')
SiteConfiguration = apps.get_model("portal", "SiteConfiguration")
return SiteConfiguration.get_solo()

View File

@@ -24,9 +24,7 @@ class GetHome(View):
except EmptyPage:
rolling_stock = paginator.page(paginator.num_pages)
return render(request, "home.html", {
"rolling_stock": rolling_stock
})
return render(request, "home.html", {"rolling_stock": rolling_stock})
class GetHomeFiltered(View):
@@ -37,17 +35,23 @@ class GetHomeFiltered(View):
# query = {
# _filter: _value
# }
query = reduce(operator.or_, (Q(
Q(rolling_class__identifier__icontains=s) |
Q(rolling_class__description__icontains=s) |
Q(rolling_class__type__type__icontains=s) |
Q(road_number__icontains=s) |
Q(rolling_class__company__name__icontains=s) |
Q(rolling_class__company__country__icontains=s) |
Q(manufacturer__name__icontains=s) |
Q(scale__scale__icontains=s) |
Q(tags__name__icontains=s)
) for s in search.split()))
query = reduce(
operator.or_,
(
Q(
Q(rolling_class__identifier__icontains=s)
| Q(rolling_class__description__icontains=s)
| Q(rolling_class__type__type__icontains=s)
| Q(road_number__icontains=s)
| Q(rolling_class__company__name__icontains=s)
| Q(rolling_class__company__country__icontains=s)
| Q(manufacturer__name__icontains=s)
| Q(scale__scale__icontains=s)
| Q(tags__name__icontains=s)
)
for s in search.split()
),
)
rolling_stock = RollingStock.objects.filter(query)
paginator = Paginator(rolling_stock, site_conf.items_per_page)
@@ -63,10 +67,11 @@ class GetHomeFiltered(View):
def get(self, request, search, page=1):
rolling_stock = self.run_search(request, search, page)
return render(request, "search.html", {
"search": search,
"rolling_stock": rolling_stock
})
return render(
request,
"search.html",
{"search": search, "rolling_stock": rolling_stock},
)
def post(self, request, page=1):
search = request.POST.get("search")
@@ -74,16 +79,21 @@ class GetHomeFiltered(View):
raise Http404
rolling_stock = self.run_search(request, search, page)
return render(request, "search.html", {
"search": search,
"rolling_stock": rolling_stock
})
return render(
request,
"search.html",
{"search": search, "rolling_stock": rolling_stock},
)
class GetRollingStock(View):
def get(self, request, uuid):
rolling_stock = RollingStock.objects.get(uuid=uuid)
return render(request, "page.html", {
return render(
request,
"page.html",
{
"rolling_stock": rolling_stock,
})
},
)

View File

@@ -1,4 +1,4 @@
from ram.utils import git_suffix
__version__ = '0.0.1'
__version__ = "0.0.1"
__version__ += git_suffix(__file__)

View File

@@ -152,10 +152,7 @@ DECODER_INTERFACES = [
(5, "Next18/Next18S"),
]
MANUFACTURER_TYPES = [
("model", "Model"),
("real", "Real")
]
MANUFACTURER_TYPES = [("model", "Model"), ("real", "Real")]
ROLLING_STOCK_TYPES = [
("engine", "Engine"),

View File

@@ -11,13 +11,14 @@ def git_suffix(fname):
"""
try:
gh = subprocess.check_output(
['git', 'rev-parse', '--short', 'HEAD'],
stderr=open(os.devnull, 'w')).strip()
gh = "-git" + gh.decode() if gh else ''
["git", "rev-parse", "--short", "HEAD"],
stderr=open(os.devnull, "w"),
).strip()
gh = "-git" + gh.decode() if gh else ""
except Exception:
# trapping everything on purpose; git may not be installed or it
# may not work properly
gh = ''
gh = ""
return gh

View File

@@ -2,6 +2,7 @@ import os
from uuid import uuid4
from django.db import models
from django.urls import reverse
# from django.core.files.storage import FileSystemStorage
# from django.dispatch import receiver
@@ -32,8 +33,11 @@ class RollingClass(models.Model):
)
description = models.CharField(max_length=256, blank=True)
manufacturer = models.ForeignKey(
Manufacturer, on_delete=models.CASCADE, null=True, blank=True,
limit_choices_to={"category": "real"}
Manufacturer,
on_delete=models.CASCADE,
null=True,
blank=True,
limit_choices_to={"category": "real"},
)
class Meta:
@@ -74,8 +78,11 @@ class RollingStock(models.Model):
)
road_number = models.CharField(max_length=128, unique=False)
manufacturer = models.ForeignKey(
Manufacturer, on_delete=models.CASCADE, null=True, blank=True,
limit_choices_to={"category": "model"}
Manufacturer,
on_delete=models.CASCADE,
null=True,
blank=True,
limit_choices_to={"category": "model"},
)
scale = models.ForeignKey(Scale, on_delete=models.CASCADE)
sku = models.CharField(max_length=32, blank=True)
@@ -112,9 +119,7 @@ class RollingStock(models.Model):
class RollingStockDocument(models.Model):
rolling_stock = models.ForeignKey(
RollingStock,
on_delete=models.CASCADE,
related_name="document"
RollingStock, on_delete=models.CASCADE, related_name="document"
)
description = models.CharField(max_length=128, blank=True)
file = models.FileField(upload_to="files/", null=True, blank=True)
@@ -131,9 +136,7 @@ class RollingStockDocument(models.Model):
class RollingStockImage(models.Model):
rolling_stock = models.ForeignKey(
RollingStock,
on_delete=models.CASCADE,
related_name="image"
RollingStock, on_delete=models.CASCADE, related_name="image"
)
image = models.ImageField(upload_to="images/", null=True, blank=True)
is_thumbnail = models.BooleanField()
@@ -149,7 +152,8 @@ class RollingStockImage(models.Model):
def save(self, **kwargs):
if self.is_thumbnail:
RollingStockImage.objects.filter(
rolling_stock=self.rolling_stock).update(is_thumbnail=False)
rolling_stock=self.rolling_stock
).update(is_thumbnail=False)
super().save(**kwargs)
@@ -159,7 +163,7 @@ class RollingStockProperty(models.Model):
on_delete=models.CASCADE,
related_name="property",
null=False,
blank=False
blank=False,
)
property = models.ForeignKey(Property, on_delete=models.CASCADE)
value = models.CharField(max_length=256)