예제 #1
0
def serialization_notifications_callback(channel, method, properties, body):
    obj_data = simplejson.loads(body)
    obj_type = obj_data.get("obj_type")
    domain_model = getattr(domain, obj_type, None)
    if domain_model:
        obj_key = valueKey(obj_data.get("obj_key"))
        session = Session()
        obj = session.query(domain_model).get(obj_key)
        if obj:
            try:
                publish_to_xml(obj)
            except Exception, e:
                notify_serialization_failure(SERIALIZE_FAILURE_TEMPLATE,
                    obj=obj, message=obj_data, error=e
                )
            channel.basic_ack(delivery_tag=method.delivery_tag)
        else:
            log.error("Could not query object of type %s with key %s. "
                "Check database records - Rejecting message.",
                domain_model, obj_key
            )
            #Reject the message
            channel.basic_reject(delivery_tag=method.delivery_tag,
                requeue=False
            )
        session.close()
예제 #2
0
def serialization_notifications_callback(channel, method, properties, body):
    obj_data = simplejson.loads(body)
    obj_type = obj_data.get("obj_type")
    domain_model = getattr(domain, obj_type, None)
    if domain_model:
        obj_key = valueKey(obj_data.get("obj_key"))
        session = Session()
        obj = session.query(domain_model).get(obj_key)
        if obj:
            try:
                publish_to_xml(obj)
            except Exception, e:
                notify_serialization_failure(SERIALIZE_FAILURE_TEMPLATE,
                                             obj=obj,
                                             message=obj_data,
                                             error=e)
            channel.basic_ack(delivery_tag=method.delivery_tag)
        else:
            log.error(
                "Could not query object of type %s with key %s. "
                "Check database records - Rejecting message.", domain_model,
                obj_key)
            #Reject the message
            channel.basic_reject(delivery_tag=method.delivery_tag,
                                 requeue=False)
        session.close()
예제 #3
0
 def getValueKey(self, context):
     """iterate through the parents until you get a valueKey """
     if context.__parent__ is None:
         return None
     else:
         try:
             value_key = valueKey(context.__parent__.__name__)[0]
         except:
             value_key = self.getValueKey(context.__parent__)
     return value_key
예제 #4
0
 def getValueKey(self, context):
     """iterate through the parents until you get a valueKey """
     if context.__parent__ is None:
         return None
     else:
         try:
             value_key = valueKey( context.__parent__.__name__ )[0]
         except:
             value_key = self.getValueKey( context.__parent__)
     return value_key
예제 #5
0
 def get(self, name, default=None):
     try:
         key = valueKey(name)
     except KeyError:
         return default
     #value = self._query.get(key)
     # sqlalchemy 0.5.x does thow an exception instead of a warning as in .4.x:
     # InvalidRequestError: Query.get() being called on a Query with existing criterion.
     session = Session()
     value = session.query(self.domain_model).get(key)
     if value is None:
         return default
     value = contained(value, self, stringKey(value))
     return value
예제 #6
0
 def get(self, name, default=None):
     try:
         key = valueKey(name)
     except KeyError:
         return default
     # value = self._query.get(key)
     # sqlalchemy 0.5.x does thow an exception instead of a warning as in .4.x:
     # InvalidRequestError: Query.get() being called on a Query with existing criterion.
     session = Session()
     value = session.query(self.domain_model).get(key)
     if value is None:
         return default
     value = contained(value, self, stringKey(value))
     return value
예제 #7
0
 def resolve(self, id): 
     class_path, oid = id.split('-', 1)
     domain_class = resolve.resolve(class_path)
     session = Session()
     value_key = container.valueKey(oid)
     return session.query(domain_class).get(value_key)
예제 #8
0
 def resolve(self, id): 
     class_path, oid = id.split('-', 1)
     domain_class = resolve.resolve(class_path)
     session = Session()
     value_key = container.valueKey(oid)
     return session.query(domain_class).get(value_key)