Example #1
0
 def yes(ar2):
     for o in objects:
         o.full_clean()
         o.save()
     watcher.send_update(ar2.request)
     #~ return self.saved_diffs_response(ar,obj)
     return self.goto_client_response(
         ar2, obj, _("%s has been saved.") % dd.obj2unicode(obj))
Example #2
0
    def run_from_ui(self, ar, **kw):
        obj = ar.selected_rows[0]
        if obj.printed_by_id is None:
            ar.error(_("Oops."))
            return

        def ok(ar2):
            obj.clear_cache()
            ar2.success(_("Printedness has been undone."), refresh=True)

        if False:
            ar.confirm(ok, _("Going to undo the printedness of %s") % dd.obj2unicode(obj))
        else:
            ok(ar)
Example #3
0
def delete_element(ar,elem):
    assert elem is not None
    msg = ar.actor.disable_delete(elem,ar)
    if msg is not None:
        ar.error(None,msg,alert=True)
        return settings.SITE.ui.render_action_response(ar.response)
            
    #~ dblogger.log_deleted(ar.request,elem)
    
    #~ changes.log_delete(ar.request,elem)
    
    dd.pre_ui_delete.send(sender=elem,request=ar.request)
    
    try:
        elem.delete()
    except Exception,e:
        dblogger.exception(e)
        msg = _("Failed to delete %(record)s : %(error)s."
            ) % dict(record=dd.obj2unicode(elem),error=e)
        #~ msg = "Failed to delete %s." % element_name(elem)
        ar.error(None,msg)
        return settings.SITE.ui.render_action_response(ar.response)
Example #4
0
 def obj2unicode(cls, obj, ar):
     return dd.obj2unicode(obj)
Example #5
0
 def yes(ar):
     obj.full_clean()
     obj.save()
     watcher.send_update(ar.request)
     #~ return self.saved_diffs_response(ar,obj)
     return self.goto_client_response(ar,obj,_("%s has been saved.") % dd.obj2unicode(obj))
Example #6
0
def form2obj_and_save(ar,data,elem,is_new,restful,file_upload=False): # **kw2save):
    """
    Parses the data from HttpRequest to the model instance and saves it.
    """
    #~ self = settings.SITE.ui
    request = ar.request
    rh = ar.ah
    #~ logger.info('20131017 form2obj_and_save %r', data)
    #~ print 'form2obj_and_save %r' % data
    
    #~ logger.info('20130418 before calling store.form2obj , elem is %s' % dd.obj2str(elem))
    # store normal form data (POST or PUT)
    #~ original_state = dict(elem.__dict__)
    if not is_new:
        watcher = dd.ChangeWatcher(elem)
    try:
        rh.store.form2obj(ar,data,elem,is_new)
        elem.full_clean()
    except CATCHED_AJAX_EXCEPTIONS as e:
        return ajax_error(ar,e)
        
    #~ kw = dict(success=True)
    ar.response.update(success=True)
    
    #~ except exceptions.ValidationError, e:
        #~ kw = settings.SITE.ui.error(e) 
        #~ return json_response(kw)
    
    #~ dirty = False
    #~ missing = object()
    #~ for k, v in original_state.iteritems():
        #~ if v != elem.__dict__.get(k, missing):
            #~ dirty = True
    #~ if not dirty:
    if is_new or watcher.is_dirty():
      
        elem.before_ui_save(ar)
        
        #~ if not is_new:
            #~ dblogger.log_changes(request,elem)
            
            
        kw2save = {}
        if is_new:
            kw2save.update(force_insert=True)
        else:
            kw2save.update(force_update=True)
            
        try:
            elem.save(**kw2save)
        except CATCHED_AJAX_EXCEPTIONS,e:
            return ajax_error(ar,e)
            #~ return views.json_response_kw(success=False,
                  #~ msg=_("There was a problem while saving your data:\n%s") % e)
                  
        if is_new:
            dd.pre_ui_create.send(elem,request=request)
            #~ changes.log_create(request,elem)
            ar.response.update(
                message=_("%s has been created.") % dd.obj2unicode(elem))
                #~ record_id=elem.pk)
        else:
            watcher.send_update(request)
            #~ watcher.log_diff(request)
            ar.response.update(message=_("%s has been updated.") % dd.obj2unicode(elem))
Example #7
0
               #~ msg=_("There was a problem while saving your data:\n%s") % e)
               
     if is_new:
         dd.pre_ui_create.send(elem,request=request)
         #~ changes.log_create(request,elem)
         ar.response.update(
             message=_("%s has been created.") % dd.obj2unicode(elem))
             #~ record_id=elem.pk)
     else:
         watcher.send_update(request)
         #~ watcher.log_diff(request)
         ar.response.update(message=_("%s has been updated.") % dd.obj2unicode(elem))
     
 else:
 
     ar.response.update(message=_("%s : nothing to save.") % dd.obj2unicode(elem))
     
 elem.after_ui_save(ar)
     
 if restful:
     # restful mode (used only for Ext.ensible) needs list_fields, not detail_fields
     ar.response.update(rows=[rh.store.row2dict(ar,elem,rh.store.list_fields)])
 elif file_upload:
     ar.response.update(record_id=elem.pk)
     return json_response(ar.response,content_type='text/html')
 else: # 20120814 
     #~ logger.info("20120816 %r", ar.action)
     #~ if isinstance(ar.bound_action.action,actions.GridEdit):
     #~ if ar.bound_action.action.action_name in ('put','post'): # grid.on_afteredit
         #~ kw.update(rows=[rh.store.row2list(ar,elem)])
     #~ else:
Example #8
0
File: views.py Project: cuchac/lino
        if is_new:
            dd.pre_ui_create.send(elem, request=request)
            #~ changes.log_create(request,elem)
            ar.response.update(
                message=_("%s has been created.") % dd.obj2unicode(elem))
                #~ record_id=elem.pk)
        else:
            watcher.send_update(request)
            #~ watcher.log_diff(request)
            ar.response.update(message=_("%s has been updated.") %
                               dd.obj2unicode(elem))

    else:

        ar.response.update(message=_("%s : nothing to save.") %
                           dd.obj2unicode(elem))

    elem.after_ui_save(ar)

    if restful:
        # restful mode (used only for Ext.ensible) needs list_fields, not
        # detail_fields
        ar.response.update(
            rows=[rh.store.row2dict(ar, elem, rh.store.list_fields)])
    elif file_upload:
        ar.response.update(record_id=elem.pk)
        return json_response(ar.response, content_type='text/html')
    else:  # 20120814
        #~ logger.info("20120816 %r", ar.action)
        #~ if isinstance(ar.bound_action.action,actions.GridEdit):
        # ~ if ar.bound_action.action.action_name in ('put','post'): # grid.on_afteredit