From 1f863847110e1e0b6724280cff1ad3c255dd800f Mon Sep 17 00:00:00 2001 From: Nikita Karetnikov Date: Mon, 23 Apr 2012 15:38:08 +0400 Subject: Custom manage.py commands for peers. Subclass for non-human users in models.py --- gstudio/management/commands/peers.py | 23 ++++++++++++ gstudio/management/commands/register-peer.py | 52 ++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 gstudio/management/commands/peers.py create mode 100644 gstudio/management/commands/register-peer.py (limited to 'gstudio/management') diff --git a/gstudio/management/commands/peers.py b/gstudio/management/commands/peers.py new file mode 100644 index 0000000..cb79991 --- /dev/null +++ b/gstudio/management/commands/peers.py @@ -0,0 +1,23 @@ +# Copyright (c) 2012 Free Software Foundation + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django.core.management.base import NoArgsCommand +import sys +from gstudio.models import Peer + +class Command(NoArgsCommand): + """Custom manage.py command to show all peers""" + def handle_noargs(self, **options): + sys.stdout.write("{0}\n".format(Peer.objects.all())) diff --git a/gstudio/management/commands/register-peer.py b/gstudio/management/commands/register-peer.py new file mode 100644 index 0000000..a068b2f --- /dev/null +++ b/gstudio/management/commands/register-peer.py @@ -0,0 +1,52 @@ +# Copyright (c) 2012 Free Software Foundation + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django.core.management.base import BaseCommand +from optparse import make_option +import sys +from gstudio.models import Peer + +class Command(BaseCommand): + """Custom manage.py command to register a peer""" + option_list = BaseCommand.option_list + ( + make_option("--ip", action="store", type="string", + dest="ip", help="Specify an IP"), + make_option("--pkey", action="store", type="string", + dest="pkey", help="Specify a public-key")) + + def handle(self, *args, **options): + try: + ip = options["ip"] + pkey = options["pkey"] + + if not ip: + sys.stderr.write("Please specify an IP\n") + sys.exit(2) + + if not pkey: + sys.stderr.write("Please specify a public-key\n") + sys.exit(2) + + pkey = open(options["pkey"]).readline().rstrip() + + except (IOError, TypeError): + sys.stderr.write("Please specify a correct public-key\n") + sys.exit(2) + + ip = Peer(ip="{0}".format(ip)) + ip.save() + + pkey = Peer(pkey="{0}".format(pkey)) + pkey.save() -- cgit v1.1