Add status field to DataSource

This commit is contained in:
jeremystretch 2023-01-27 09:13:14 -05:00
parent 41607f9a52
commit cdc18868a5
7 changed files with 80 additions and 11 deletions

View File

@ -12,23 +12,37 @@ __all__ = (
class DataSourceSerializer(NetBoxModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='core-api:datasource-detail')
type = ChoiceField(choices=DataSourceTypeChoices, required=False)
url = serializers.HyperlinkedIdentityField(
view_name='core-api:datasource-detail'
)
type = ChoiceField(
choices=DataSourceTypeChoices
)
status = ChoiceField(
choices=DataSourceStatusChoices,
read_only=True
)
# Related object counts
file_count = serializers.IntegerField(read_only=True)
file_count = serializers.IntegerField(
read_only=True
)
class Meta:
model = DataSource
fields = [
'id', 'url', 'display', 'name', 'type', 'url', 'enabled', 'description', 'git_branch', 'ignore_rules',
'username', 'password', 'created', 'last_updated', 'file_count',
'id', 'url', 'display', 'name', 'type', 'url', 'enabled', 'status', 'description', 'git_branch',
'ignore_rules', 'username', 'password', 'created', 'last_updated', 'file_count',
]
class DataFileSerializer(NetBoxModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='core-api:datafile-detail')
source = NestedDataSourceSerializer(read_only=True)
url = serializers.HyperlinkedIdentityField(
view_name='core-api:datafile-detail'
)
source = NestedDataSourceSerializer(
read_only=True
)
class Meta:
model = DataFile

View File

@ -13,9 +13,24 @@ class DataSourceTypeChoices(ChoiceSet):
FTP = 'ftp'
GIT = 'git'
CHOICES = [
CHOICES = (
(LOCAL, _('Local')),
(HTTP, _('HTTP(S)')),
(FTP, _('FTP(S)')),
(GIT, _('Git')),
]
)
class DataSourceStatusChoices(ChoiceSet):
NEW = 'new'
SYNCING = 'syncing'
COMPLETED = 'completed'
FAILED = 'failed'
CHOICES = (
(NEW, _('New')),
(SYNCING, _('Syncing')),
(COMPLETED, _('Completed')),
(FAILED, _('Failed')),
)

View File

@ -15,7 +15,7 @@ class DataSourceFilterSet(django_filters.FilterSet):
class Meta:
model = DataSource
fields = ('id', 'name', 'type', 'git_branch', 'username')
fields = ('id', 'name', 'type', 'enabled', 'status', 'git_branch', 'username')
def search(self, queryset, name, value):
if not value.strip():

View File

@ -3,7 +3,9 @@ from django import forms
from core.choices import *
from core.models import *
from netbox.forms import NetBoxModelFilterSetForm
from utilities.forms import DynamicModelMultipleChoiceField, MultipleChoiceField
from utilities.forms import (
BOOLEAN_WITH_BLANK_CHOICES, DynamicModelMultipleChoiceField, MultipleChoiceField, StaticSelect,
)
__all__ = (
'DataFileFilterForm',
@ -46,6 +48,16 @@ class DataFileFilterForm(NetBoxModelFilterSetForm):
choices=DataSourceTypeChoices,
required=False
)
enabled = forms.NullBooleanField(
required=False,
widget=StaticSelect(
choices=BOOLEAN_WITH_BLANK_CHOICES
)
)
status = MultipleChoiceField(
choices=DataSourceStatusChoices,
required=False
)
git_branch = forms.CharField(
max_length=100,
required=False

View File

@ -0,0 +1,18 @@
# Generated by Django 4.1.5 on 2023-01-27 14:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0003_datasource_created_datasource_last_updated'),
]
operations = [
migrations.AddField(
model_name='datasource',
name='status',
field=models.CharField(default='new', editable=False, max_length=50),
),
]

View File

@ -40,6 +40,12 @@ class DataSource(ChangeLoggedModel):
max_length=200,
verbose_name=_('URL')
)
status = models.CharField(
max_length=50,
choices=DataSourceStatusChoices,
default=DataSourceStatusChoices.NEW,
editable=False
)
enabled = models.BooleanField(
default=True
)

View File

@ -19,6 +19,10 @@
<th scope="row">Type</th>
<td>{{ object.get_type_display }}</td>
</tr>
<tr>
<th scope="row">Status</th>
<td>{{ object.get_status_display }}</td>
</tr>
<tr>
<th scope="row">Enabled</th>
<td>{% checkmark object.enabled %}</td>