summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--program/management/commands/addnote.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/program/management/commands/addnote.py b/program/management/commands/addnote.py
new file mode 100644
index 0000000..2ba2022
--- /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