web/ldt_utils/ldt/admin.py
changeset 5 ae8593287883
parent 4 7c994c98d1df
child 6 7256b057c180
equal deleted inserted replaced
4:7c994c98d1df 5:ae8593287883
     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)