--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/update_db_0_10_to_0_11.sql Mon Sep 06 17:00:34 2010 +0200
@@ -0,0 +1,2 @@
+ALTER TABLE ldt_utils_content ALTER COLUMN src DROP NOT NULL;
+ALTER TABLE ldt_utils_content ADD COLUMN content_creation_date timestamp with time zone;
--- a/web/franceculture/settings.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/franceculture/settings.py Mon Sep 06 17:00:34 2010 +0200
@@ -37,6 +37,7 @@
LANGUAGES = (
('fr', ugettext('French')),
+ ('en', ugettext('English')),
)
--- a/web/franceculture/templates/franceculture/partial/contentslist.html Wed Sep 01 09:50:05 2010 +0200
+++ b/web/franceculture/templates/franceculture/partial/contentslist.html Mon Sep 06 17:00:34 2010 +0200
@@ -9,7 +9,7 @@
<tfoot class="projectscontentsfooter">
<tr>
<td colspan="2">+</td>
- <td>{% trans "Create content" %}</td>
+ <td><a href="{% url ldt.ldt_utils.views.write_content %}">{% trans "Create content" %}</a></td>
</tr>
</tfoot>
<tbody class="projectscontentsbody">
--- a/web/ldt/ldt_utils/forms.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/ldt_utils/forms.py Mon Sep 06 17:00:34 2010 +0200
@@ -1,6 +1,11 @@
from django import forms
from models import Project, Content
import uuid
+from utils import generate_uuid
+from django.forms.widgets import Widget
+from django.contrib.admin import widgets as admin_widgets
+from django.core.urlresolvers import reverse
+from ldt.settings import BASE_URL
class LdtImportForm(forms.Form):
importFile = forms.FileField()
@@ -27,3 +32,37 @@
class CopyProjectForm (forms.Form):
title = forms.CharField()
+
+
+class ContentForm(forms.ModelForm):
+
+ #iri_id = forms.CharField(max_length=1024, widget=forms.HiddenInput, initial=generate_uuid)
+ iriurl = forms.CharField(max_length=1024, widget=forms.HiddenInput, required=False)
+ content_creation_date = forms.SplitDateTimeField(widget=admin_widgets.AdminSplitDateTime, required=False)
+
+ def clean_iri_id(self):
+ data = self.cleaned_data.get('iri_id')
+ if not data:
+ data = generate_uuid()
+ return data
+
+ def clean(self):
+ cleaned_data = self.cleaned_data
+ iriurl_data = cleaned_data.get('iriurl')
+ iri_id_data = cleaned_data['iri_id']
+ if not iriurl_data:
+ iriurl_data = "%s/%s.iri" % (iri_id_data, iri_id_data)
+ cleaned_data['iriurl'] = iriurl_data
+ return cleaned_data
+
+ class Meta:
+ model = Content
+ exclude = ("creation_date", "update_date", "authors")
+ widgets = {
+ 'iri_id': forms.HiddenInput,
+ }
+
+ class Media:
+ css = {
+ 'all' : ('admin/css/forms.css','admin/css/base.css', 'admin/css/base.css', 'admin/css/widgets.css')
+ }
--- a/web/ldt/ldt_utils/models.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/ldt_utils/models.py Mon Sep 06 17:00:34 2010 +0200
@@ -2,7 +2,7 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from ldt.core.models import Document, Owner
-from utils import create_ldt, copy_ldt, create_empty_iri, update_iri
+from utils import create_ldt, copy_ldt, create_empty_iri, update_iri, generate_uuid
import lxml.etree
import os.path
import uuid
@@ -19,9 +19,9 @@
class Content(models.Model):
- iri_id = models.CharField(max_length=1024, unique=True)
+ iri_id = models.CharField(max_length=1024, unique=True, default=generate_uuid)
iriurl = models.CharField(max_length=1024)
- src = models.CharField(max_length=1024)
+ src = models.CharField(max_length=1024, null=True, blank=True)
videopath = models.CharField(max_length=1024, null=True, blank=True)
creation_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
@@ -30,6 +30,7 @@
external_id = models.CharField(max_length=1024, null=True, blank=True)
authors = models.ManyToManyField(Author, blank=True)
duration = models.IntegerField(null=True, blank=True)
+ content_creation_date = models.DateTimeField(null=True, blank=True)
def get_duration(self):
if self.duration is None:
@@ -47,6 +48,7 @@
#TODO: better manage the change in .iri name and error scenario (save in temp file + rename
def save(self, *args, **kwargs):
+
# create iri file if needed
created = False
try:
@@ -67,6 +69,7 @@
if os.path.exists(iri_file_path):
os.remove(iri_file_path)
raise e
+
# update it
super(Content, self).save(*args, **kwargs)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/web/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html Mon Sep 06 17:00:34 2010 +0200
@@ -0,0 +1,26 @@
+{% load i18n %} {# form of creation of content #}
+{% load adminmedia %}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <script type="text/javascript" src="{{MEDIA_URL}}admin/js/core.js" ></script>
+ <script type="text/javascript" src="{% url jsi18n %}" } ></script>
+ <link rel="stylesheet" href="{{BASE_URL}}static/ldt/css/ldt.css" />
+ {{content_form.media }}
+ <script type="text/javascript">
+ window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}";
+ </script>
+</head>
+<body>
+<div id="add_content">
+<div class="title">{% trans "Create content" %}</div>
+<form action="{{create_content_action}}" method="POST">
+{% csrf_token %}
+{{ content_form.as_ul }}
+<input type="submit"/>
+</form>
+</div>
+</body>
+</html>
--- a/web/ldt/ldt_utils/urls.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/ldt_utils/urls.py Mon Sep 06 17:00:34 2010 +0200
@@ -22,9 +22,15 @@
url(r'^cljson/externalid/(?P<id>.*)$', 'views.project_json_externalid'),
)
+urlpatterns += patterns('',
+ url('^jsi18n','django.views.i18n.javascript_catalog', name='jsi18n'),
+)
+
+
if test_ldt():
urlpatterns += patterns('ldt.ldt_utils',
url(r'^space/content/$', 'views.list_content'),
+ url(r'^space/content/create/$', 'views.write_content'),
url(r'^space/ldt/$', 'views.list_ldt'),
url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.indexProject'),
url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init', name='space_ldt_init'),
--- a/web/ldt/ldt_utils/utils.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/ldt_utils/utils.py Mon Sep 06 17:00:34 2010 +0200
@@ -31,6 +31,9 @@
key = str(bool).lower()
return __BOOLEAN_DICT.get(key, False)
+def generate_uuid():
+ return unicode(uuid.uuid1())
+
class LdtSearch(object):
def query(self, field, query):
--- a/web/ldt/ldt_utils/views.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/ldt_utils/views.py Mon Sep 06 17:00:34 2010 +0200
@@ -9,7 +9,7 @@
from django.utils import simplejson
from django.utils.html import escape
from fileimport import *
-from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm
+from forms import LdtImportForm, LdtAddForm, SearchForm, AddProjectForm, CopyProjectForm, ContentForm
from ldt.core.models import Owner
from models import *
from utils import *
@@ -145,7 +145,7 @@
}
return render_to_response('ldt/ldt_utils/content_list.html', context, context_instance=RequestContext(request))
-
+@login_required
def create_ldt_view(request):
if request.method == "POST" :
form = LdtAddForm(request.POST)
@@ -364,3 +364,30 @@
form = CopyProjectForm
return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
+
+def write_content_base(request):
+
+ if request.method =="POST":
+ form = ContentForm(request.POST)
+ if form.is_valid():
+ content, created = Content.objects.get_or_create(iri_id = form.cleaned_data['iri_id'], defaults = form.cleaned_data)
+ if not created:
+ form = ContentForm(request.POST, instance=content)
+ form.save()
+ else:
+ content.save()
+ form = ContentForm(instance=content)
+ else:
+ form = ContentForm()
+
+ return form
+
+
+def write_content(request):
+
+ content_form = write_content_base(request)
+
+ return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'create_content_action': reverse(write_content)}, context_instance=RequestContext(request))
+
+
+
\ No newline at end of file
--- a/web/ldt/settings.py Wed Sep 01 09:50:05 2010 +0200
+++ b/web/ldt/settings.py Mon Sep 06 17:00:34 2010 +0200
@@ -13,6 +13,7 @@
#SERVER_EMAIL = "admin@domain.com"
WEB_URL = getattr(settings, 'WEB_URL', '')
+BASE_URL = getattr(settings, 'BASE_URL', '')
MEDIA_URL = getattr(settings, 'MEDIA_URL', '')
MEDIA_ROOT = getattr(settings, 'MEDIA_ROOT', '')
SITE_ID = getattr(settings, 'SITE_ID', 1)