2016-04-26 4 views
0

Dies ist mit Bezug auf meine Frage bezüglich Client side validation in openerpClient-seitige Validierung OPENERP

Ich brauche es zu klären, weiter mehr und bitte so freundlich sein, mir zu helfen mit, dass.

Was ich wissen muss, ist, obwohl ich den Wert überprüft und die Fehlermeldung erhalten, sobald das Ergebnis falsch ist; Sobald die Fehlermeldung geschlossen ist, kann ich den falsch eingegebenen Wert speichern.

Bitte helfen Sie mir, das zu vermeiden, bis Sie den richtigen Wert eingegeben haben, mit dem Sie nicht fortfahren können.

Überprüfung Feld ist,

'start_time': fields.char('Start Time'), 

und die Funktion wird sein,

def check_start_time(self,cr,uid,ids,start_time_check,context=None): 
    starting_time=start_time_check 
    try: 
     time.strptime(starting_time, "%H:%M") 
     return True 
    except ValueError: 
     raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)')) 
+0

Sie die 'check_start_time' Funktion ein weiteres Mal in der' write' oder 'create' Methode aufrufen kann, dann kann es nicht, bis der richtige Wert gespeichert werden wird eingegeben. – SDBot

+0

Es gibt bereits eine create-Methode in der Klasse. Kann ich eine andere create-Methode für dieselbe Klasse erneut aufrufen? Vielen Dank für die schnelle Unterstützung btw ... –

+0

Kannst du nicht einfach die vorhandene 'create' Methode bearbeiten? – SDBot

Antwort

1

Sie können die Standardmethoden im Modell außer Kraft setzen. Sie benötigen keine neue create-Methode, wenn Sie eine haben. Fügen Sie einfach Ihren Feldzustand ein.
(In Ihrem Fall müssen Sie sowohl create als auch write überschreiben, weil create run wenn Benutzer einen neuen Datensatz erstellen und wr wr wenn Benutzer einen Datensatz aktualisieren wollen.)

Eine weitere Lösung, wenn Sie Constraints verwenden .

Python

def create(self, cr, uid, vals, context=None): 
    try: 
     time.strptime(starting_time, "%H:%M") 
    except ValueError: 
     raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)')) 
    # do something 
    return super(ModelName, self).create(cr, uid, vals, context) 

def write(self, cr, uid, vals, context=None): 
    try: 
     time.strptime(starting_time, "%H:%M") 
    except ValueError: 
     raise osv.except_osv(('Error'), ('Start time not in hh:mm format (Eg: 08:30)')) 
    # do something 
    return super(ModelName, self).write(cr, uid, vals, context) 



def _check_startTime(cr, uid, ids): 
    try: 
     time.strptime(starting_time, "%H:%M") 
     return True 
    except ValueError: 
     return False 

_constraints = [(_check_startTime, 'Invalid format!', ['start_time'])] 

Here is a very useful cheat sheet.