summaryrefslogtreecommitdiff
path: root/gstudio/management
diff options
context:
space:
mode:
authorNikita Karetnikov <nikita.karetnikov@gmail.com>2012-04-23 15:38:08 +0400
committerNikita Karetnikov <nikita.karetnikov@gmail.com>2012-04-23 15:38:08 +0400
commit1f863847110e1e0b6724280cff1ad3c255dd800f (patch)
treea57a79f31f00daf903e6edabf4578a208ccd46e8 /gstudio/management
parent850672379e02b758d89ed609e7f8a9c009853104 (diff)
downloadgnowsys-1f863847110e1e0b6724280cff1ad3c255dd800f.tar.gz
Custom manage.py commands for peers. Subclass for non-human users in models.py
Diffstat (limited to 'gstudio/management')
-rw-r--r--gstudio/management/commands/peers.py23
-rw-r--r--gstudio/management/commands/register-peer.py52
2 files changed, 75 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+
+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 <http://www.gnu.org/licenses/>.
+
+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()