def execute(self):
     """
     The main execution path; this function is invoked by a scheduler.
     """
     processed, failed, objs_to_del, objs_to_reset = 0, 0, [], []
     print 'Getting objects to process...'
     objects = SuperTagProcessQueue.objects.filter(locked=False)
     print 'Done. %s object(s)' % len(objects)
     print 'Locking object(s)...'
     SuperTagProcessQueue.objects.filter(locked=False).update(locked=True)
     transaction.commit()
     print 'Done.'
     for obj in objects:
         print 'Processing: %s...' % obj
         try:
             print 'Start processing object with calais...'
             process(obj.content_object)
             print 'Done'
             objs_to_del.append(obj.pk)
             print 'Committing calais data...'
             transaction.commit()
             print 'Done'
             processed += 1
         except Exception, e:
             print 'Failed to process object, rolling back... %s' % e
             objs_to_reset.append(obj.pk)
             transaction.rollback()
             print 'Done'
             failed += 1
         time.sleep(1)
def save_handler(sender, instance, **kwargs):
    if instance:
        from supertagging.modules import process, add_to_queue 
        if USE_QUEUE:
            add_to_queue(instance)
        else:
            process(instance)
 def changelist_view(self, request, extra_context=None):
     if request.method == 'POST' and '_update_tags' in request.POST:
         ctype_id = request.GET.get(u'content_type__id', [False,])
         obj_id = request.GET.get('object_id', [False])
         if ctype_id == False or obj_id == False:
             return HttpResponseRedirect(request.get_full_path())
         ctype = ContentType.objects.get(id=ctype_id)
         obj = ctype.get_object_for_this_type(id=obj_id)
         from supertagging.modules import process
         process(obj)
         msg = "Supertags have been updated."
         self.message_user(request, msg)
         return HttpResponseRedirect(request.get_full_path())
     else:
         return super(SuperTaggedItemAdmin, self).changelist_view(request, extra_context)
 def update_tags(self, obj, tag_names):
     """
     Update tags associated with an object.
     """
     ctype = ContentType.objects.get_for_model(obj)
     current_tags = list(self.filter(
         supertaggeditem__content_type__pk=ctype.pk,
         supertaggeditem__object_id=obj.pk
     ))
     
     updated_tag_names = parse_tag_input(tag_names)
     # Always lower case tags
     updated_tag_names = [t.lower() for t in updated_tag_names]
     
     # Process the tags with Calais
     from supertagging.modules import process
     processed_tags = process(obj, updated_tag_names)
     
     for t in updated_tag_names:
         if t not in [p.name for p in processed_tags]:
             try:
                 tags = self.filter(name__iexact=t)
                 tag = tags[0] # Take the first found tag with the same name.
             except:
                 tag = self.create(id=t, name=t, slug=slugify(t), stype='Custom')
             
             SuperTaggedItem._default_manager.get_or_create(tag=tag, content_type=ctype, object_id=obj.pk, field='None')
def save_handler(sender, **kwargs):
    if 'instance' in kwargs:
        process(kwargs['instance'])