async def reset(self, username, survey_name): """Delete all submission data including the results of a survey.""" survey_id = utils.combine(username, survey_name) await database.database['resultss'].delete_one({'_id': survey_id}) await database.database[f'surveys.{survey_id}.submissions'].drop() s = f'surveys.{survey_id}.verified-submissions' await database.database[s].drop()
def __init__(self, configuration): """Initialize alligator with some pipeline parts already defined.""" self.configuration = configuration self.survey_id = utils.combine( configuration['username'], configuration['survey_name'], ) self.collection = ( database.database[f'surveys.{self.survey_id}.submissions'] if configuration['authentication'] == 'open' else database.database[f'surveys.{self.survey_id}.verified-submissions'] ) self.resultss = database.database['resultss'] self.mapping = { 'email': self._add_email, 'option': self._add_option, 'radio': self._add_radio, 'selection': self._add_selection, 'text': self._add_text, } self.project = {} self.group = { '_id': self.survey_id, 'count': { '$sum': 1 }, } self.merge = { 'into': 'resultss', 'on': '_id', 'whenMatched': 'replace', 'whenNotMatched': 'insert', }
def fetch(self, username, survey_name): """Fetch and return a survey object from the local cache. Raises KeyError if survey is not cached. """ survey_id = utils.combine(username, survey_name) return self._cache[survey_id]
def update(self, configuration): """Update or create survey object in the local cache. Draft surveys are not cached. When the given configuration is a draft, any (non-draft) configuration is deleted from the cache. """ username = configuration['username'] survey_name = configuration['survey_name'] survey_id = utils.combine(username, survey_name) if configuration['draft']: self.delete(username, survey_name) else: self._cache[survey_id] = Survey(configuration)
async def delete(self, username, survey_name): """Delete the survey and all its data from the database and cache.""" await database.database['configurations'].delete_one(filter={ 'username': username, 'survey_name': survey_name }, ) self.cache.delete(username, survey_name) survey_id = utils.combine(username, survey_name) await database.database['resultss'].delete_one({'_id': survey_id}) await database.database[f'surveys.{survey_id}.submissions'].drop() s = f'surveys.{survey_id}.verified-submissions' await database.database[s].drop()
def delete(self, username, survey_name): """Remove survey object from the local cache.""" survey_id = utils.combine(username, survey_name) self._cache.pop(survey_id, None)
async def archive(self, username, survey_name): """Delete submission data of a survey, but keep the results.""" survey_id = utils.combine(username, survey_name) await database.database[f'surveys.{survey_id}.submissions'].drop() s = f'surveys.{survey_id}.verified-submissions' await database.database[s].drop()