From b9aea9d71f2b01416e28eaaa5100072c3ef14673 Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com>
Date: Sat, 23 Jul 2011 15:40:34 +0200
Subject: [PATCH] added management command to add a note.

---
 program/management/commands/addnote.py | 54 ++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 program/management/commands/addnote.py

diff --git a/program/management/commands/addnote.py b/program/management/commands/addnote.py
new file mode 100644
index 00000000..2ba20225
--- /dev/null
+++ b/program/management/commands/addnote.py
@@ -0,0 +1,54 @@
+from django.contrib.auth.models import User
+from django.core.management.base import BaseCommand, CommandError
+from django.core.exceptions import ValidationError
+
+from datetime import datetime
+import sys
+
+from program.models import Show, TimeSlot, Note
+
+class Command(BaseCommand):
+    help = 'adds a note to a timeslot'
+    args = '<show_id> <date>'
+    
+    def handle(self, *args, **options):
+        if len(args) == 2:
+            show_id = args[0]
+            start_date = args[1]
+        else:
+            raise CommandError('you must provide the show_id date')
+
+        try:
+            show = Show.objects.get(id=show_id)
+        except Show.DoesNotExist as dne:
+            raise CommandError(dne)
+
+        try:
+            start = datetime.strptime(start_date, '%Y-%m-%d')
+        except ValueError as ve:
+            raise CommandError(ve)
+        else:
+            year, month, day = start.year, start.month, start.day
+
+        try:
+            timeslot = TimeSlot.objects.get(show=show, start__year=year, start__month=month, start__day=day)
+        except TimeSlot.DoesNotExist as dne:
+            raise CommandError(dne)
+
+        try:
+            title = sys.stdin.readline().rstrip()
+            lines = sys.stdin.readlines()
+        except Exception as e:
+            raise CommandError(e)
+
+        owner = show.owners[0] if show.owners.count() > 0 else User.objects.get(pk=1)
+        note = Note(timeslot=timeslot, owner=owner, title=title, content=''.join(lines))
+
+        try:
+            note.validate_unique()
+        except ValidationError as ve:
+            raise CommandError(ve.messages[0])
+        else:
+            note.save()
+            print 'added note "%s" to "%s"' % (title, timeslot)
+        
\ No newline at end of file
-- 
GitLab