Skip to content

Commit f045bb9

Browse files
authored
Merge pull request #30 from jtdub/core-refactor
rename home app to core app
2 parents b8b5694 + 2fc98d8 commit f045bb9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+400
-630
lines changed

.pylintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[MASTER]
2-
ignore=migrations
2+
ignore=migrations,tests
33

44
[MESSAGES CONTROL]
55
disable=no-member,too-few-public-methods,too-many-ancestors, duplicate-code

netopsio/core/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Netops.io core app."""

netopsio/core/admin.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""Register core models in admin panel."""
2+
3+
from django.contrib import admin
4+
5+
from core.models import RequestLog
6+
7+
8+
class RequestLogAdmin(admin.ModelAdmin):
9+
"""Request Log Admin Site Fields."""
10+
11+
list_display = ("ip", "app", "date")
12+
13+
14+
admin.site.register(RequestLog, RequestLogAdmin)

netopsio/core/api/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Core application API."""

netopsio/home/serializers.py renamed to netopsio/core/api/serializers.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
"""Home App and Worker Serializers."""
2-
from rest_framework import serializers
1+
"""Core App and Worker Serializers."""
32
from django_celery_results.models import TaskResult
3+
from rest_framework import serializers
4+
5+
from core import models
46

57

68
class TaskResultSerializer(serializers.HyperlinkedModelSerializer):
@@ -24,3 +26,19 @@ class Meta:
2426
"date_done",
2527
"url",
2628
]
29+
30+
31+
class TaskSerializer(serializers.Serializer): # pylint: disable=abstract-method
32+
"""Ping Serializer."""
33+
34+
task_id = serializers.CharField(max_length=512)
35+
36+
37+
class RequestLogSerializer(serializers.ModelSerializer):
38+
"""RequestLog Serializer."""
39+
40+
class Meta:
41+
"""RequestLog Serializer Meta."""
42+
43+
model = models.RequestLog
44+
fields = ["id", "date", "task_id", "ip", "app", "result", "url"]

netopsio/core/api/urls.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
"""Netops.io core api urls."""
2+
3+
from rest_framework.routers import DefaultRouter
4+
5+
from core.api import views
6+
7+
router = DefaultRouter()
8+
router.register(r"tasks", views.TaskResultViewSet)
9+
router.register(r"request-logs", views.RequestLogViewSet, basename="requestlog")
10+
router.register(r"ping", views.PingViewSet, basename="ping")
11+
router.register(r"traceroute", views.TraceRouteViewSet, basename="traceroute")
12+
router.register(r"nmap", views.NmapViewSet, basename="nmap")

netopsio/core/api/views.py

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
"""Netops.io core api views."""
2+
3+
from django_celery_results.models import TaskResult
4+
from drf_yasg import openapi
5+
from drf_yasg.utils import swagger_auto_schema
6+
from rest_framework import viewsets
7+
from rest_framework.response import Response
8+
9+
from core import models, tasks
10+
from core.api import serializers
11+
from netopsio.utilities import get_ip_address
12+
13+
14+
class TaskResultViewSet(viewsets.ReadOnlyModelViewSet):
15+
"""Rest API View for 'list' and 'retrieving' TaskResult actions."""
16+
17+
queryset = TaskResult.objects.all()
18+
serializer_class = serializers.TaskResultSerializer
19+
lookup_field = "task_id"
20+
21+
22+
class RequestLogViewSet(viewsets.ReadOnlyModelViewSet):
23+
"""Rest API View for 'list' and 'retrieving' RequestLog actions."""
24+
25+
queryset = models.RequestLog.objects.all()
26+
serializer_class = serializers.RequestLogSerializer
27+
28+
29+
class PingViewSet(viewsets.ViewSet):
30+
"""Ping Viewset."""
31+
32+
@swagger_auto_schema(
33+
request_body=openapi.Schema(
34+
type=openapi.TYPE_OBJECT,
35+
properties={
36+
"host": openapi.Schema(
37+
type=openapi.TYPE_STRING, description="Host to ping."
38+
),
39+
},
40+
)
41+
) # pylint: disable=no-self-use
42+
def create(self, request, host=None):
43+
"""Ping a host."""
44+
host = get_ip_address(request)
45+
task = tasks.ping.delay(host=host)
46+
data = models.TaskModel(task_id=task.task_id)
47+
serializer = serializers.TaskSerializer(data, context={"request": request})
48+
return Response(serializer.data)
49+
50+
51+
class TraceRouteViewSet(viewsets.ViewSet):
52+
"""TraceRoute Viewset."""
53+
54+
@swagger_auto_schema(
55+
request_body=openapi.Schema(
56+
type=openapi.TYPE_OBJECT,
57+
properties={
58+
"host": openapi.Schema(
59+
type=openapi.TYPE_STRING, description="Host to traceroute."
60+
),
61+
},
62+
)
63+
) # pylint: disable=no-self-use
64+
def create(self, request, host=None):
65+
"""Traceroute a host."""
66+
host = get_ip_address(request)
67+
task = tasks.traceroute.delay(host=host)
68+
data = models.TaskModel(task_id=task.task_id)
69+
serializer = serializers.TaskSerializer(data, context={"request": request})
70+
return Response(serializer.data)
71+
72+
73+
class NmapViewSet(viewsets.ViewSet):
74+
"""Nmap Viewset."""
75+
76+
@swagger_auto_schema(
77+
request_body=openapi.Schema(
78+
type=openapi.TYPE_OBJECT,
79+
properties={
80+
"host": openapi.Schema(
81+
type=openapi.TYPE_STRING, description="Host to ping."
82+
),
83+
},
84+
)
85+
) # pylint: disable=no-self-use
86+
def create(self, request, host=None):
87+
"""Nmap a host."""
88+
host = get_ip_address(request)
89+
task = tasks.nmap.delay(host=host)
90+
data = models.TaskModel(task_id=task.task_id)
91+
serializer = serializers.TaskSerializer(data, context={"request": request})
92+
return Response(serializer.data)

netopsio/home/apps.py renamed to netopsio/core/apps.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from django.apps import AppConfig
44

55

6-
class HomeConfig(AppConfig):
7-
"Home app config."
6+
class CoreConfig(AppConfig):
7+
"Core app config."
88
default_auto_field = "django.db.models.BigAutoField"
9-
name = "home"
9+
name = "core"

netopsio/traceroute/migrations/0001_initial.py renamed to netopsio/core/migrations/0001_add_request_log.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Generated by Django 3.2.10 on 2022-07-11 00:25
1+
# Generated by Django 3.2.10 on 2022-07-18 02:40
22

33
from django.db import migrations, models
44

@@ -11,7 +11,7 @@ class Migration(migrations.Migration):
1111

1212
operations = [
1313
migrations.CreateModel(
14-
name="TraceRouteRequest",
14+
name="RequestLog",
1515
fields=[
1616
(
1717
"id",
@@ -26,6 +26,7 @@ class Migration(migrations.Migration):
2626
("task_id", models.UUIDField(null=True, unique=True)),
2727
("ip", models.CharField(max_length=255)),
2828
("result", models.TextField()),
29+
("app", models.CharField(max_length=255)),
2930
],
3031
),
3132
]
File renamed without changes.

0 commit comments

Comments
 (0)