def rm(self, uid, username, did, force=False): # is canonical? canon_deleted = True cnd, err = cond(CND_NO_DELETED, CND_CANONICAL, username=username, did=did, uid=uid) rows = self.db.select(self.TABLE, 'flags', cnd, limit=1) if not rows: canon_deleted = False # rm cnd, err = cond(CND_NO_DELETED, username=username, did=did, uid=uid) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows and not force: raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd) # set new canon flag if canon_deleted: cnd, err = cond(CND_NO_DELETED, uid=uid) rows = self.db.select(self.TABLE, self.COLUMNS, cnd, limit=1) if rows: nf = set_canonical(rows[0][self.FLAGIDX]) cnd = full_cond(self.COLUMNS, rows[0]) upd = {'flags': nf} self.db.update(self.TABLE, upd, cnd)
def rm(self, did, domain, force=False): if self.is_last_domain(did, domain): return self.rm_did(did, force) # is canonical? canon_deleted = True cnd, err = cond(CND_NO_DELETED, CND_CANONICAL, did=did, domain=domain) rows = self.db.select(self.TABLE, 'did', cnd, limit=1) if not rows: canon_deleted = False # remove cnd, err = cond(CND_NO_DELETED, did=did, domain=domain) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows: if force: return raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd) # set new canon flag if canon_deleted: cnd, err = cond(CND_NO_DELETED, did=did) rows = self.db.select(self.TABLE, self.COLUMNS, cnd, limit=1) if rows: nf = set_canonical(rows[0][self.FLAGIDX]) cnd = full_cond(self.COLUMNS, rows[0]) upd = {'flags': nf} self.db.update(self.TABLE, upd, cnd)
def _rm(self, cnd, err, force): rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows and not force: raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd)
def rm_uid(self, uid, force=False): cnd, err = cond(CND_NO_DELETED, uid=uid) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows and not force: raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd)
def rm(self, uid=None, force=False): if self.is_used(uid): if force: self._try_rm_orphans(uid) else: raise Error (EUSER, uid) # rm all uids (FIX: or only datetime_created?) cnd, err = cond(CND_NO_DELETED, uid=uid) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows and not force: raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd)
def rm(self, attr, value=None, force=False): if not self.exist(attr, value): if force: return if value is None: raise Error (ENOREC, errstr(attr=attr)) else: raise Error (ENOREC, errstr(attr=attr, value=value)) cnd, err = cond(CND_NO_DELETED, name=attr, value=value) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd) # FIX: purge hack self.purge()
def rm_did(self, did, force=False): da = self.Domain_attrs(self.dburi, self.db) if self.is_used(did): if force: self._try_rm_orphans(did) else: raise Error (EDOMAIN, 'did=%s' % did) da.rm_exist(did, 'digest_realm') # remove did cnd, err = cond(CND_NO_DELETED, did=did) rows = self.db.select(self.TABLE, self.COLUMNS, cnd) if not rows: if force: return raise Error (ENOREC, err) for row in rows: nf = set_deleted(row[self.FLAGIDX]) cnd = full_cond(self.COLUMNS, row) self.db.update(self.TABLE, {'flags': nf}, cnd)