1212import codecs
1313from bson .json_util import dumps
1414from bson .objectid import ObjectId
15-
15+ import sys
1616import logging
1717logger = logging .getLogger ('emo' )
1818
@@ -638,7 +638,7 @@ def _create_obj(self, req):
638638 return ret_obj
639639
640640 def obj_create (self , bundle , ** kwargs ):
641- return self .obj_update (bundle , kwargs )
641+ return self .obj_update (bundle )
642642
643643
644644
@@ -658,28 +658,38 @@ def obj_update(self, bundle, **kwargs):
658658 elif 'name' in request and 'detector' in request :
659659 searchDict ['name' ] = request ['name' ]
660660 searchDict ['detector' ] = request ['detector' ]
661+ else :
662+ doc = self ._default (
663+ "ERROR" ,
664+ "Bad request. You must define a query of either id, number, or name/detector."
665+ )
666+ bundle .obj = rundoc (initial = doc )
667+ bundle = self .full_hydrate (bundle )
668+ return bundle .obj
661669
662670 # We REQUIRE the following format
663671 # {
664- # "qname ": a unique name for this check
672+ # "checkname ": a unique name for this check
665673 # "version": the version info for this check
666674 # "checks": [] a list of string/bool pairs i.e. {"deadtime": true}
667675 # "extracted": a dictionary of any format of size < 100kB
668676 # }
669677
670678
671679 updateDict = {}
672- if ( 'qname ' not in request or 'checks' not in request
680+ if ( 'checkname ' not in request or 'checks' not in request
673681 or 'version' not in request ):
674682 doc = self ._default (
675- "ERROR" ,
676- "Bad request. Require status, host, location, and type "
677- )
683+ "ERROR" ,
684+ "Bad request. Require name, checks, and version. "
685+ )
678686 bundle .obj = rundoc (initial = doc )
679687 bundle = self .full_hydrate (bundle )
680688 return bundle .obj
681689
682- updateDict ['qname' ] = request ['qname' ]
690+ updateDict ['name' ] = request ['checkname' ]
691+ updateDict ['user' ] = bundle .request .user .username
692+ updateDict ['date' ] = datetime .datetime .now ()
683693 updateDict ['checks' ] = request ['checks' ]
684694 updateDict ['version' ] = request ['version' ]
685695
@@ -696,46 +706,43 @@ def obj_update(self, bundle, **kwargs):
696706 updateDict ['extracted' ] = request ['extracted' ]
697707
698708 # Enforce string/bool types for checks array
699- for key , value in updateDict ['checks' ]:
709+ for key , value in updateDict ['checks' ]. items () :
700710 extre = "test"
701- if type (key ) != type (extre ) or type (value ) != type (True ):
702- pass
703- elif request ['status' ] == 'processed' :
704- if 'pax_version' not in request :
705- return {"number" : doc ['number' ],
706- "ERROR" : "pax_version must be provided for processed data" }
707- updateDict ['pax_version' ] = request ['pax_version' ]
711+ if type (key ) != type (extre ) or type (value ) != type (True ):
712+ doc = self ._default (
713+ "ERROR" ,
714+ "Bad request. Checks field must be string/bool pairs."
715+ )
716+ bundle .obj = rundoc (initial = doc )
717+ bundle = self .full_hydrate (bundle )
718+ return bundle .obj
708719
709- # Status needed for new entry
710- updateDict ['status' ] = request ['status' ]
711- updateDict ['creation_time' ] = datetime .datetime .utcnow (),
712720
713- # Now add a new entry
721+
714722 res = self ._db ()[settings .RUNS_DB_COLLECTION ].update_one (
715723 searchDict ,
716- {"$push " : {"data" : updateDict }})
724+ {"$set " : {"quality." + str ( request [ 'checkname' ]) : updateDict }})
717725 doc = self ._default (
718726 "Success" ,
719727 "Document updated" ,
720728 res
721- )
729+ )
722730 bundle .obj = rundoc (initial = doc )
723731 bundle = self .full_hydrate (bundle )
724-
725732 return rundoc (initial = doc )
726733
727734 def _default (self , message , longer , return_value ):
728735 doc = {
729736 "number" : - 1 ,
730- "_id" : - 1 ,
737+ "_id" : - 1 ,
731738 "detector" : "ret" ,
732- "name" : message ,
739+ "name" : message ,
733740 "doc" : {
734741 "message" : longer ,
735- "success" : message ,
736- "ret" : return_value
737- }
742+ "success" : message ,
743+ "ret" : return_value
738744 }
745+ }
739746 return doc
740747
741748 def obj_delete_list (self , bundle , ** kwargs ):
0 commit comments