def migrate_db(): "Against Commit: c46d853c2949cc78ba86c0a8a618cf3ba0a3e44b" create_app() from survaider.survey.model import Survey from survaider.minions.attachment import Image c2 = 0 for svey in Survey.objects(): #: Take the Old Uploaded images and move them to the Images DB old_img = svey.metadata.get('img_uploads', []) u = svey.created_by[0] c1 = 0 for img in old_img: i = Image() i.owner = u i.filename = img i.save() svey.attachments.append(i) c1 += 1 if 'img_uploads' in svey.metadata: del svey.metadata['img_uploads'] svey.save() c2 += 1 print("Updated {0} entries in Survey {1}".format(c1, c2))
def post(self, survey_id, action): svey = api_get_object(Survey.objects, survey_id) if svey.hidden: raise APIException("This Survey has been deleted", 404) if action == 'struct': args = self.post_args() svey.struct = json.loads(args['swag']) svey.save() ret = { 'id': str(svey), 'saved': True, } return ret, 200 elif action == 'expires': args = self.post_args() dat = args['swag'] svey.expires = dateutil.parser.parse(dat) svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 elif action == 'paused': args = self.post_args() dat = json.loads(args['swag']) if type(dat) is bool: svey.paused = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'response_cap': args = self.post_args() dat = json.loads(args['swag']) if type(dat) is int: svey.response_cap = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'unit_name': if type(svey) is not SurveyUnit: raise APIException("Action valid for Survey Units only.", 400) args = self.post_args() dat = args['swag'] if not len(dat) > 0: raise APIException("TypeError: Invalid swag value.", 400) svey.unit_name = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 elif action == 'unit_addition': if type(svey) is SurveyUnit: raise APIException("Action valid for Root Survey only.", 400) args = self.post_args() dat = args['swag'] if not len(dat) > 0: raise APIException("TypeError: Invalid swag value.", 400) usvey = SurveyUnit() usr = User.objects(id = current_user.id).first() usvey.unit_name = dat usvey.referenced = svey usvey.created_by.append(usr) usvey.save() usvey.reload() ret = { 'id': str(svey), 'unit': usvey.repr_sm, 'saved': True, } return ret, 200 elif action == 'survey_name': args = self.post_args() dat = args['swag'] if len(dat) > 0: svey.metadata['name'] = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'img_upload': try: uploaded_img = AttachmentImage() usr = User.objects(id = current_user.id).first() uploaded_img.owner = usr uploaded_img.file = request.files['swag'] uploaded_img.save() svey.attachments.append(uploaded_img) svey.save() ret = { 'id': str(svey), 'field': action, 'access_id': str(uploaded_img), 'temp_uri': uploaded_img.file, 'metadata': uploaded_img.repr, 'saved': True, } return ret, 200 except Exception as e: raise APIException("Upload Error; {0}".format(str(e)), 400) elif action == 'share': args = self.post_args() dat = args['swag'] try: usr = User.objects.get(email = dat) grp = set(svey.created_by) grp.add(usr) svey.created_by = list(grp) svey.save() ret = { 'id': str(svey), 'action': action, 'user': usr.repr, 'survey': svey.repr_sm } return ret, 200 except DoesNotExist: try: ftract = SurveySharePromise.objects( future_email = dat, future_survey = svey ).first() if not ftract or ftract.active is False: raise ValueError except ValueError: ftract = SurveySharePromise() ftract.future_email = dat ftract.future_survey = svey ftract.save() #: Send the Email Here. Send the URL by `ftract.url` attr. finally: ret = { 'id': str(svey), 'action': action, 'scheduled': True, 'message': ('The user will be added to the survey after ' 'they sign up on the website.'), 'promise': ftract.repr } return ret, 201 raise APIException("Must specify a valid option", 400)
def post(self, survey_id, action): svey = api_get_object(Survey.objects, survey_id) if svey.hidden: raise APIException("This Survey has been deleted", 404) if action == 'struct': args = self.post_args() svey.struct = json.loads(args['swag']) svey.save() ret = { 'id': str(svey), 'saved': True, } return ret, 200 elif action == 'expires': args = self.post_args() dat = args['swag'] svey.expires = dateutil.parser.parse(dat) svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 elif action == 'paused': args = self.post_args() dat = json.loads(args['swag']) if type(dat) is bool: svey.paused = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'response_cap': args = self.post_args() dat = json.loads(args['swag']) if type(dat) is int: svey.response_cap = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'unit_name': if type(svey) is not SurveyUnit: raise APIException("Action valid for Survey Units only.", 400) args = self.post_args() dat = args['swag'] if not len(dat) > 0: raise APIException("TypeError: Invalid swag value.", 400) svey.unit_name = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 elif action == 'unit_addition': if type(svey) is SurveyUnit: raise APIException("Action valid for Root Survey only.", 400) args = self.post_args() dat = args['swag'] if not len(dat) > 0: raise APIException("TypeError: Invalid swag value.", 400) usvey = SurveyUnit() usr = User.objects(id = current_user.id).first() usvey.unit_name = dat usvey.referenced = svey usvey.created_by.append(usr) usvey.save() usvey.reload() ret = { 'id': str(svey), 'unit': usvey.repr_sm, 'saved': True, } return ret, 200 elif action == 'survey_name': args = self.post_args() dat = args['swag'] if len(dat) > 0: svey.metadata['name'] = dat svey.save() ret = { 'id': str(svey), 'field': action, 'saved': True, } return ret, 200 raise APIException("TypeError: Invalid swag value.", 400) elif action == 'img_upload': try: uploaded_img = AttachmentImage() usr = User.objects(id = current_user.id).first() uploaded_img.owner = usr uploaded_img.file = request.files['swag'] uploaded_img.save() svey.attachments.append(uploaded_img) svey.save() ret = { 'id': str(svey), 'field': action, 'access_id': str(uploaded_img), 'temp_uri': uploaded_img.file, 'metadata': uploaded_img.repr, 'saved': True, } return ret, 200 except Exception as e: raise APIException("Upload Error; {0}".format(str(e)), 400) raise APIException("Must specify a valid option", 400)