diff --git a/admin/dashboard.py b/admin/dashboard.py index 065efda..5c577fd 100644 --- a/admin/dashboard.py +++ b/admin/dashboard.py @@ -758,7 +758,7 @@ def pastafari2_edit_server(): admin=GenerateAdminClass(server, url, t) - admin.arr_fields_edit=['hostname', 'ip'] + admin.arr_fields_edit=['hostname', 'ip', 'ssh_port'] admin.url_redirect=url_for('.pastafari2_dashboard') diff --git a/models/pastafari2.py b/models/pastafari2.py index 94b6bfc..dc13b40 100644 --- a/models/pastafari2.py +++ b/models/pastafari2.py @@ -13,7 +13,8 @@ from paramecio2.libraries.db.extrafields.filefield import FileField from paramecio2.libraries.urls import make_media_url from paramecio2.libraries import datetime from paramecio2.modules.admin.models.admin import UserAdmin -from modules.monit.models.monit import Server +from modules.pastafari2.models.tasks import LonelyIpField +#from modules.monit.models.monit import Server class ServerGroup(WebModel): @@ -23,6 +24,18 @@ class ServerGroup(WebModel): self.register(corefields.CharField('group'), True) self.register(corefields.CharField('code_group'), True) +class Server(WebModel): + + def __init__(self, connection=None): + + super().__init__(connection) + + #self.register(corefields.ForeignKeyField('user_id', UserServer(connection)), True) + self.register(DomainField('hostname'), True) + self.register(corefields.CharField('group'), True) + self.register(LonelyIpField('ip'), True) + self.fields['ip'].unique=True + #self.fields['ip'].indexed=True class ServerDbTask(Server): @@ -31,7 +44,7 @@ class ServerDbTask(Server): super().__init__(connection) self.fields['group'].required=False self.register(corefields.ForeignKeyField('group_id', ServerGroup(connection), 11, False, 'id', 'group', select_fields=[])) - self.register(corefields.IntegerField('ssh_port')) + self.register(corefields.IntegerField('ssh_port'), True) class UpdateServerScripts(WebModel): diff --git a/models/tasks.py b/models/tasks.py index d3844da..21f976e 100644 --- a/models/tasks.py +++ b/models/tasks.py @@ -17,9 +17,33 @@ from redis import Redis from rq import Queue import importlib import traceback -from modules.monit.models.monit import LonelyIpField +#from modules.monit.models.monit import LonelyIpField from modules.pastafari2.libraries.configtask import config_task +class LonelyIpField(IpField): + + def __init__(self, name, size=64): + + super().__init__(name, size) + + self.duplicated_ip=False + + def check(self, value): + + value=super().check(value) + + if self.duplicated_ip==True: + self.txt_error='Error: you have a server with this ip in the database' + self.error=True + return value + + return value + + def show_formatted(self, value): + + return '%s' % (value, value) + + class Task(WebModel): def __init__(self, connection):