예제 #1
0
파일: xform.py 프로젝트: ekush/commcare-hq
    def get(self, case_id):
        if not case_id:
            raise IllegalCaseId('case_id must not be empty')
        if case_id in self.cache:
            return self.cache[case_id]

        try:
            if self.strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=self.wrap)
            elif self.lock:
                try:
                    case_doc, lock = CommCareCase.get_locked_obj(_id=case_id)
                except redis.RedisError:
                    case_doc = CommCareCase.get(case_id)
                else:
                    self.locks.append(lock)
            else:
                if self.wrap:
                    case_doc = CommCareCase.get(case_id)
                else:
                    case_doc = CommCareCase.get_db().get(case_id)
        except ResourceNotFound:
            return None

        self.validate_doc(case_doc)
        self.cache[case_id] = case_doc
        return case_doc
예제 #2
0
파일: xform.py 프로젝트: ekush/commcare-hq
    def get(self, case_id):
        if not case_id:
            raise IllegalCaseId('case_id must not be empty')
        if case_id in self.cache:
            return self.cache[case_id]

        try:
            if self.strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=self.wrap)
            elif self.lock:
                try:
                    case_doc, lock = CommCareCase.get_locked_obj(_id=case_id)
                except redis.RedisError:
                    case_doc = CommCareCase.get(case_id)
                else:
                    self.locks.append(lock)
            else:
                if self.wrap:
                    case_doc = CommCareCase.get(case_id)
                else:
                    case_doc = CommCareCase.get_db().get(case_id)
        except ResourceNotFound:
            return None

        self.validate_doc(case_doc)
        self.cache[case_id] = case_doc
        return case_doc
예제 #3
0
    def get_case_with_lock(case_id, lock=False, strip_history=False, wrap=False):

        def _get_case():
            if wrap:
                return CommCareCase.get(case_id)
            else:
                return CommCareCase.get_db().get(case_id)

        try:
            if strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=wrap)
            elif lock:
                try:
                    case, lock = CommCareCase.get_locked_obj(_id=case_id)
                    if case and not wrap:
                        case = case.to_json()
                    return case, lock
                except redis.RedisError:
                    case_doc = _get_case()
            else:
                case_doc = _get_case()
        except ResourceNotFound:
            return None, None

        return case_doc, None
예제 #4
0
    def get_case_with_lock(case_id, lock=False, wrap=False):
        def _get_case():
            if wrap:
                return CommCareCase.get(case_id)
            else:
                return CommCareCase.get_db().get(case_id)

        try:
            if lock:
                try:
                    case, lock = CommCareCase.get_locked_obj(_id=case_id)
                    if case and not wrap:
                        case = case.to_json()
                    return case, lock
                except redis.RedisError:
                    case_doc = _get_case()
예제 #5
0
    def get_case_with_lock(case_id, lock=False, strip_history=False, wrap=False):
        try:
            if strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=wrap)
            elif lock:
                try:
                    return CommCareCase.get_locked_obj(_id=case_id)
                except redis.RedisError:
                    case_doc = CommCareCase.get(case_id)
            else:
                if wrap:
                    case_doc = CommCareCase.get(case_id)
                else:
                    case_doc = CommCareCase.get_db().get(case_id)
        except ResourceNotFound:
            return None, None

        return case_doc, None
예제 #6
0
    def _get_case(self, case_id):
        try:
            if self.strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=self.wrap)
            elif self.lock:
                try:
                    case_doc, lock = CommCareCase.get_locked_obj(_id=case_id)
                except redis.RedisError:
                    case_doc = CommCareCase.get(case_id)
                else:
                    self.locks.append(lock)
            else:
                if self.wrap:
                    case_doc = CommCareCase.get(case_id)
                else:
                    case_doc = CommCareCase.get_db().get(case_id)
        except ResourceNotFound:
            return None

        return case_doc
예제 #7
0
파일: casedb.py 프로젝트: zbidi/commcare-hq
    def _get_case(self, case_id):
        try:
            if self.strip_history:
                case_doc = CommCareCase.get_lite(case_id, wrap=self.wrap)
            elif self.lock:
                try:
                    case_doc, lock = CommCareCase.get_locked_obj(_id=case_id)
                except redis.RedisError:
                    case_doc = CommCareCase.get(case_id)
                else:
                    self.locks.append(lock)
            else:
                if self.wrap:
                    case_doc = CommCareCase.get(case_id)
                else:
                    case_doc = CommCareCase.get_db().get(case_id)
        except ResourceNotFound:
            return None

        return case_doc