<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>limestone/multimedia/migrations/0002_remove_slug_from_multimedia.py</filename>
    </added>
    <added>
      <filename>limestone/multimedia/migrations/0003_adjusted_pubdate_default.py</filename>
    </added>
    <added>
      <filename>limestone/multimedia/templatetags/__init__.py</filename>
    </added>
    <added>
      <filename>limestone/multimedia/templatetags/smart_if.py</filename>
    </added>
    <added>
      <filename>limestone/multimedia/urls.py</filename>
    </added>
    <added>
      <filename>limestone/plaintext/forms.py</filename>
    </added>
    <added>
      <filename>limestone/plaintext/urls.py</filename>
    </added>
    <added>
      <filename>limestone/templates/n21alpha/multimedia/base.html</filename>
    </added>
    <added>
      <filename>limestone/templates/n21alpha/multimedia/plaintext.html</filename>
    </added>
    <added>
      <filename>limestone/templates/n21alpha/story/base.html</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,4 @@
 from django.db import models
-import datetime
 import django.contrib.auth.models as auth
 from limestone.utils.model_inheritance import ParentModel,ChildManager
 from limestone.multimedia.constants import LICENSE_CHOICES, LICENSE_DEFAULT
@@ -16,18 +15,29 @@ class Media(ParentModel):
     authors = models.ManyToManyField(auth.User, related_name=&quot;media_authors&quot;)
     attribution = models.TextField(blank=True)
     license = models.CharField(max_length=100, choices = LICENSE_CHOICES, default=LICENSE_DEFAULT,)
-    slug = models.SlugField()
-    pub_date = models.DateTimeField(default=datetime.datetime.now)
+    pub_date = models.DateTimeField(editable=False,null=True)
     created_by = models.ForeignKey(auth.User, related_name=&quot;media_created_by&quot;)
-    created_at = models.DateTimeField(editable=False, default=datetime.datetime.now)
+    created_at = models.DateTimeField(editable=False)
     updated_by = models.ForeignKey(auth.User, related_name=&quot;media_updated_by&quot;)
-    updated_at = models.DateTimeField(editable=False, default=datetime.datetime.now)
+    updated_at = models.DateTimeField(editable=False)
     
     objects = MediaManager()
     children = ChildManager()
     
+    def __unicode__(self):
+        return unicode(self.title)
+
+    def __str__(self):
+        return self.title
+
     def _set_tags(self, tags):
 	    Tag.objects.update_tags(self, tags)
 
     def _get_tags(self):
-	    return Tag.objects.get_for_object(self)
\ No newline at end of file
+	    return Tag.objects.get_for_object(self)
+
+    def get_parent_model(self):
+        &quot;&quot;&quot;
+        Helper method for inheritance
+        &quot;&quot;&quot;
+        return Media
\ No newline at end of file</diff>
      <filename>limestone/multimedia/models.py</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,65 @@
-# Create your views here.
+# -*- coding: utf-8 -*-
+from django.shortcuts import render_to_response
+from django.template import RequestContext
+from django.http import HttpResponseRedirect, HttpResponse
+from django.core.urlresolvers import reverse
+from django.conf import settings
+from django.contrib.auth.decorators import login_required
+from django.shortcuts import get_object_or_404
+import django.contrib.auth.models as auth
+from datetime import datetime
+
+from limestone.plaintext.forms import PlainTextForm
+from limestone.plaintext.models import PlainText
+from limestone.multimedia.models import Media
+from limestone.story.models import MetaStory, Story
+from tagging.models import Tag
+
+
+@login_required
+def new_plaintext(request,metastory_id,story_id):
+    tags = Tag.objects.all()
+    metastory = get_object_or_404(MetaStory, pk=metastory_id)
+    story = get_object_or_404(Story, pk=story_id, metastory=metastory)
+    form = PlainTextForm()
+    breadcrumb = [ {'title':metastory,'url':reverse('metastory_edit', args=[metastory_id])} , {'title':story,'url':reverse('story_edit', args=[metastory_id,story_id])} , {'title':'New PlainText','url':reverse('plaintext_new', args=[metastory_id,story_id])} ]
+    return render_to_response(&quot;multimedia/plaintext.html&quot;, {'breadcrumb':breadcrumb,'form':form,'tags':tags,'form_url':reverse('plaintext_create', args=[metastory_id,story_id])}, context_instance=RequestContext(request))
+
+
+@login_required
+def edit_plaintext(request,metastory_id,story_id,multimedia_id):
+    tags = Tag.objects.all()
+    metastory = get_object_or_404(MetaStory, pk=metastory_id)
+    story = get_object_or_404(Story, pk=story_id, metastory=metastory)
+    multimedia = get_object_or_404(PlainText, pk=multimedia_id, story=story)
+    form = PlainTextForm(instance=multimedia)
+    breadcrumb = [ {'title':metastory,'url':reverse('metastory_edit', args=[metastory_id])} , {'title':story,'url':reverse('story_edit', args=[metastory_id,story_id])} , {'title':multimedia,'url':reverse('plaintext_edit', args=[metastory_id,story_id,multimedia_id])} ]
+    return render_to_response(&quot;multimedia/plaintext.html&quot;, {'breadcrumb':breadcrumb,'form':form,'tags':tags,'form_url':reverse('plaintext_update', args=[metastory_id,story_id,multimedia_id])}, context_instance=RequestContext(request))
+
+
+@login_required
+def save_plaintext(request,metastory_id,story_id,multimedia_id=None):
+    if request.method == 'POST':
+        metastory= get_object_or_404(MetaStory, pk=metastory_id)
+        story = get_object_or_404(Story, pk=story_id, metastory=metastory)
+        if multimedia_id:
+            multimedia = get_object_or_404(PlainText, pk=multimedia_id, story=story)
+        else:
+            multimedia = PlainText(created_by = request.user, story=story, created_at = datetime.now())
+
+        multimedia.updated_by = request.user
+        multimedia.updated_at = datetime.now()
+        form = PlainTextForm(request.POST,instance=multimedia)
+        
+        if form.is_valid():
+            form.save()
+            request.user.message_set.create(message=&quot;1|Your plaintext asset was saved successfully.&quot;)
+            
+            return HttpResponseRedirect( reverse('plaintext_edit', args=[metastory_id,story_id,multimedia.id]) )
+        else:
+            request.user.message_set.create(message=&quot;0|An error has occured.&quot;)
+            
+            tags = Tag.objects.all()
+            return render_to_response( &quot;multimedia/plaintext.html&quot;, {'form':form,'tags':tags}, context_instance=RequestContext(request))
+    else:
+        return HttpResponseRedirect( settings.LOGIN_REDIRECT_URL )
\ No newline at end of file</diff>
      <filename>limestone/plaintext/views.py</filename>
    </modified>
    <modified>
      <diff>@@ -3,14 +3,15 @@ from django.conf.urls.defaults import *
 
 urlpatterns = patterns ('limestone.story.views',
 
-    url(r'^meta/$','new_metastory',name='metastory_new'),
-    url(r'^meta/create/$','save_metastory',name='metastory_create'),
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/$','edit_metastory',name='metastory_edit'),
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/update/$','save_metastory',name='metastory_update'),
+    url(r'^package/$','new_metastory',name='metastory_new'),
+    url(r'^package/create/$','save_metastory',name='metastory_create'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/$','edit_metastory',name='metastory_edit'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/update/$','save_metastory',name='metastory_update'),
     
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/story/$','new_story',name='story_new'),
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/story/create/$','save_story',name='story_create'),
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/story/(?P&lt;story_id&gt;\d+)/$','edit_story',name='story_edit'),
-    url(r'^meta/(?P&lt;metastory_id&gt;\d+)/story/(?P&lt;story_id&gt;\d+)/update/$','save_story',name='story_update'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/story/$','new_story',name='story_new'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/story/create/$','save_story',name='story_create'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/story/(?P&lt;story_id&gt;\d+)/$','edit_story',name='story_edit'),
+    url(r'^package/(?P&lt;metastory_id&gt;\d+)/story/(?P&lt;story_id&gt;\d+)/update/$','save_story',name='story_update'),
     
+    (r'^package/(?P&lt;metastory_id&gt;\d+)/story/(?P&lt;story_id&gt;\d+)/assets/',include('limestone.multimedia.urls')),
 )</diff>
      <filename>limestone/story/urls.py</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ import django.contrib.auth.models as auth
 from limestone.newsroom.models import Newsroom
 from limestone.story.models import MetaStory, Story
 from limestone.story.forms import MetaStoryForm, StoryForm
+from limestone.multimedia.models import Media
 from tagging.models import Tag
 
 
@@ -74,9 +75,10 @@ def edit_story(request,metastory_id,story_id):
     metastory = get_object_or_404(MetaStory, pk=metastory_id)
     story = get_object_or_404(Story, pk=story_id, metastory=metastory)
     form = StoryForm(instance=story)
+    assets = Media.children.filter(story=story)
     members = Newsroom.objects.filter(members__in=metastory.newsrooms.values_list('id',flat=True))
     breadcrumb = [ {'title':story.metastory,'url':reverse('metastory_edit', args=[metastory_id])} , {'title':story,'url':reverse('story_edit', args=[metastory_id,story_id])} ]
-    return render_to_response(&quot;story/story.html&quot;, {'breadcrumb':breadcrumb,'form':form,'newsrooms_members':members,'tags':tags,'form_url':reverse('story_update', args=[metastory_id,story_id])}, context_instance=RequestContext(request))
+    return render_to_response(&quot;story/story.html&quot;, {'breadcrumb':breadcrumb,'form':form,'newsrooms_members':members,'media_assets':assets,'tags':tags,'form_url':reverse('story_update', args=[metastory_id,story_id]),'metastory_id':metastory_id,'story_id':story_id}, context_instance=RequestContext(request))
 
 
 @login_required
@@ -86,9 +88,9 @@ def save_story(request,metastory_id,story_id=None):
         if story_id:
             story = get_object_or_404(Story, pk=story_id, metastory=metastory)
         else:
-            story = Story(created_by = request.user)
+            story = Story(created_by = request.user, metastory=metastory)
 
-        story.metastory=metastory
+        #story.metastory=metastory
         story.updated_by = request.user
         form = StoryForm(request.POST,instance=story)
         </diff>
      <filename>limestone/story/views.py</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-{% extends &quot;story/base_story.html&quot; %}
+{% extends &quot;story/base.html&quot; %}
 
 
 {% load i18n %}</diff>
      <filename>limestone/templates/n21alpha/story/metastory.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,8 @@
-{% extends &quot;story/base_story.html&quot; %}
+{% extends &quot;story/base.html&quot; %}
 
 
 {% load i18n %}
+{% load smart_if %}
 
 
 {% block content %}
@@ -30,7 +31,20 @@
 	&lt;/div&gt;
 	
 	&lt;div class=&quot;grid_6&quot;&gt;
-		&lt;h4&gt;Story Media&lt;/h4&gt;
+		&lt;h4&gt;Story Assets&lt;/h4&gt;
+		{% if story_id %}
+			&lt;div&gt;Add: &lt;a href=&quot;{% url plaintext_new metastory_id story_id %}&quot;&gt;Plain Text&lt;/a&gt; | &lt;a href=&quot;&quot;&gt;Video&lt;/a&gt; | &lt;a href=&quot;&quot;&gt;Image&lt;/a&gt; | &lt;a href=&quot;&quot;&gt;Audio&lt;/a&gt;&lt;/div&gt;
+		{% else %}
+			&lt;div&gt;You have not created any media assets yet.&lt;/div&gt;
+		{% endif %}
+		{% for asset in media_assets %}
+		&lt;div&gt;
+			&lt;a href=&quot;{% url plaintext_edit metastory_id story_id asset.id %}&quot;&gt;{{ asset }}&lt;/a&gt;
+		&lt;/div&gt;
+		{% endfor %}
+		{% if media_assets.count == 0 %}
+			&lt;div&gt;You have not created any media assets yet.&lt;/div&gt;
+		{% endif %}
 	&lt;/div&gt;
 		
 	&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</diff>
      <filename>limestone/templates/n21alpha/story/story.html</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ urlpatterns = patterns(
     
     (r'^newsroom/',include('limestone.newsroom.urls')),
     (r'^partner/',include('limestone.partner.urls')),
-    (r'^story/',include('limestone.story.urls')),
+    (r'^builder/',include('limestone.story.urls')),
 )
 
 if settings.DEBUG:</diff>
      <filename>limestone/urls.py</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>limestone/templates/n21alpha/story/base_story.html</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>0e723373f40126ae6ffefcbbfa29c2506d58f8d6</id>
    </parent>
  </parents>
  <author>
    <name>bhalle</name>
    <email>bhalle@jrn368.dhcp.asu.edu</email>
  </author>
  <url>http://github.com/bhalle/limestone/commit/8ca2d879d21aea06d04a114233fa22a5a271dcf8</url>
  <id>8ca2d879d21aea06d04a114233fa22a5a271dcf8</id>
  <committed-date>2009-10-27T15:56:19-07:00</committed-date>
  <authored-date>2009-10-27T15:56:19-07:00</authored-date>
  <message>added plaintext multimedia type</message>
  <tree>7917478e277efacf304ee0e0f5e4168a7e74c6bc</tree>
  <committer>
    <name>bhalle</name>
    <email>bhalle@jrn368.dhcp.asu.edu</email>
  </committer>
</commit>
