1 from django.contrib import admin |
|
2 from django.conf.urls.defaults import * |
|
3 from django.shortcuts import render_to_response |
|
4 from django.template import RequestContext |
|
5 from django.conf import settings |
|
6 from models import * |
|
7 from forms import * |
|
8 from fileimport import * |
|
9 from ldt.ldt_utils import STORE |
|
10 from ldt.ldt_utils import ANALYZER |
|
11 |
|
12 import lucene |
|
13 |
|
14 admin.site.register(Project) |
|
15 |
|
16 class ContentAdmin(admin.ModelAdmin): |
|
17 |
|
18 def import_file(self, request): |
|
19 if request.method =='POST': |
|
20 form = LdtImportForm(request.POST, request.FILES) |
|
21 if form.is_valid(): |
|
22 filetoprocess =form.cleaned_data['importFile'] |
|
23 flatten = form.cleaned_data['flatten'] |
|
24 videoPath = form.cleaned_data['videoPath'] |
|
25 # fi = None |
|
26 fi = FileImport(filetoprocess, videoPath, flatten) |
|
27 try: |
|
28 fi.processFile() |
|
29 args = {'message': "File imported"} |
|
30 except FileImportError: |
|
31 non_field_errors = form.non_field_errors() |
|
32 non_field_errors.append("Error when importing : unknown file type") |
|
33 form._errors["__all__"] = non_field_errors |
|
34 args = {'message': "Can not import file, unknown file type", 'form': form} |
|
35 |
|
36 else: |
|
37 non_field_errors = form.non_field_errors() |
|
38 non_field_errors.append("Error when importing : invalid form") |
|
39 form._errors["__all__"] = non_field_errors |
|
40 args = {'message': "Error when importing : invalid form", 'form': form} |
|
41 else: |
|
42 form = LdtImportForm() |
|
43 args = {'form': form, 'current_app': self.admin_site.name, 'current_action' : 'import_file'} |
|
44 return render_to_response('admin/ldt/content/upload_form.html', args, context_instance=RequestContext(request)) |
|
45 |
|
46 def reindex(self, request): |
|
47 message = None |
|
48 if request.method == "POST": |
|
49 form = ReindexForm(request.POST) |
|
50 if form.is_valid(): |
|
51 # try: |
|
52 writer = lucene.IndexWriter(STORE, ANALYZER, True, lucene.IndexWriter.MaxFieldLength.UNLIMITED) |
|
53 contentList = form.cleaned_data["contents"] |
|
54 indexer = ContentIndexer(contentList,writer) |
|
55 indexer.index_all() |
|
56 |
|
57 writer.close() |
|
58 message = "Indexation ok : " + repr(form.cleaned_data["contents"]) |
|
59 form = ReindexForm() |
|
60 # except Exception, inst: |
|
61 # non_field_errors = form.non_field_errors() |
|
62 # non_field_errors.append("Error when reindexing : " + cgi.escape(repr(inst))) |
|
63 # form._errors["__all__"] = non_field_errors |
|
64 #message = "ERROR : " + repr(non_field_errors) |
|
65 else: |
|
66 form = ReindexForm() |
|
67 |
|
68 return render_to_response('admin/ldt/content/reindex_form.html', {'form': form, 'message':message, 'current_app': self.admin_site.name, 'current_action' : 'reindex' }, context_instance=RequestContext(request)) |
|
69 |
|
70 def get_urls(self): |
|
71 urls = super(ContentAdmin, self).get_urls() |
|
72 content_urls = patterns('', |
|
73 url(r'^reindex/$', self.admin_site.admin_view(self.reindex), name="ldt_content_reindex"), |
|
74 # (r'^admin/ldt/content/import/upload/$', 'ldt.ldt_utils.views.uploadFile'), |
|
75 url(r'^import/$', self.admin_site.admin_view(self.import_file), name="ldt_content_import_file") |
|
76 ) |
|
77 return content_urls + urls |
|
78 |
|
79 |
|
80 admin.site.register(Content, ContentAdmin) |
|