- Timestamp:
- 10/18/09 21:40:10 (3 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
plone4bio.biosql/trunk/src/plone4bio/biosql/content/database.py
r94 r112 52 52 # del(kwargs['parent']) 53 53 # super(BioSQLDatabase, self).__init__(*args, **kwargs) 54 55 # def __getattr__(self, name): 56 # if self.has_key(name): 57 # return self[name] 58 # else: 59 # raise AttributeError, name 60 61 def invalidateCache(self): 62 self._v_database = None 63 self._v_keys = None 54 64 55 65 # @ram.cache(_cachekey) … … 122 132 if not database: 123 133 raise StopIteration 124 for name in database.get_all_primary_ids(): # -- bioentry_id 125 yield str(name) 134 if self.getBioSQLRoot().seqrecord_key == 'accession': 135 for name in database.adaptor.list_bioentry_accessions(database.dbid): 136 yield str(name) 137 elif self.getBioSQLRoot().seqrecord_key == 'version': 138 for name in database.adaptor.list_bioentry_versions(database.dbid): 139 yield str(name) 140 else: # default = 'bioentry_id': 141 for name in database.get_all_primary_ids(): # -- bioentry_id 142 yield str(name) 126 143 127 144 def keys(self, reload=False): … … 136 153 if not isinstance(key, basestring): 137 154 return False 138 try: 139 key = int(key) 140 except ValueError: 141 return False 155 if self.getBioSQLRoot().seqrecord_key == 'accession': 156 pass 157 elif self.getBioSQLRoot().seqrecord_key == 'version': 158 rv = key.split(".") 159 if len(rv) > 2: 160 return False 161 if len(rv) == 2: 162 try: 163 int(rv[1]) 164 except ValueError: 165 return False 166 else: # default = 'bioentry_id': 167 try: 168 key = int(key) 169 except ValueError: 170 return False 142 171 try: 143 172 database = self.getDatabase() … … 145 174 # No acquisition context, fail silently 146 175 return False 147 # TODO: bug in get_Seq_by_primary_id ??? see #XXX 148 if database.get_Seq_by_primary_id(key): 149 return True 150 else: 176 try: 177 if self.getBioSQLRoot().seqrecord_key == 'accession': 178 return bool(database.get_Seq_by_acc(key)) 179 if self.getBioSQLRoot().seqrecord_key == 'version': 180 return bool(database.get_Seq_by_ver(key)) 181 else: # default = 'bioentry_id': 182 return bool(database.get_Seq_by_primary_id(key)) # biopython's bug ??? 183 except IndexError: 151 184 return False 152 # return key in [str(id) for id in self.keys()]153 #try:154 # return key in self.keys()155 #except:156 # return False157 185 158 186 # Acquisition wrappers don't support the __iter__ slot, so re-implement
