# HG changeset patch # User ymh # Date 1283785234 -7200 # Node ID a5719dcb742aa9123ba1bd4bc5b84a9272c155c2 # Parent 509e30b9f5c972f340ae03070ca120400b7774f9 add content creation diff -r 509e30b9f5c9 -r a5719dcb742a sql/update_db_0_10_to_0_11.sql --- /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; diff -r 509e30b9f5c9 -r a5719dcb742a web/franceculture/settings.py --- 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')), ) diff -r 509e30b9f5c9 -r a5719dcb742a web/franceculture/templates/franceculture/partial/contentslist.html --- 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 @@ + - {% trans "Create content" %} + {% trans "Create content" %} diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/forms.py --- 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') + } diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/models.py --- 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) diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html --- /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 %} + + + + + + + + {{content_form.media }} + + + +
+
{% trans "Create content" %}
+
+{% csrf_token %} +{{ content_form.as_ul }} + +
+
+ + diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/urls.py --- 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.*)$', '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.*)$', 'views.indexProject'), url(r'^space/ldt/init/(?P.*)/(?P.+)$', 'views.init', name='space_ldt_init'), diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/utils.py --- 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): diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/ldt_utils/views.py --- 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 diff -r 509e30b9f5c9 -r a5719dcb742a web/ldt/settings.py --- 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)