def seo_save(): if not request.user.role('admin'): return False data = request.forms v = Validator(data) v.field("seou_url").required() v.field("seou_id").integer(nullable=True) v.fields("seot_id").integer(nullable=True) seo = request.db(SEOUrl).get_by_url(v.valid_data.get("seou_url").strip()) if seo is not None and seo.seou_id != v.valid_data.seou_id: v.add_error("seou_url", "Такая ссылка уже существует") if v.is_valid(): seo = request.db(SEOUrl).get_by_id(data.seou_id) if seo is None: seo = SEOUrl() seo.seou_url = data.get('seou_url').strip() tag_ids = data.getall('seot_id') tag_text = data.getall('seot_text') request.db.add(seo) request.db.commit() for i, text in enumerate(tag_text): text = text.strip() id = tag_ids[i] tag = request.db(SEOUrl).get_by_id(id) if tag is None: tag = SEOTag() tag.seou_id = seo.seou_id if text == '': if id is not None: request.db.delete(tag) else: tag.seot_text = text request.db.add(tag) request.db.commit() return {"status": "ok"} else: return {"status": "fail", "errors": v.errors}
def save_object(): if not request.user.role('admin'): return False data = request.forms photos = request.files.getall('file') v = Validator(data) v.fields("file.id").integer(nullable=True) v.fields("file.visible").boolean() v.fields("file.order").integer() if v.is_valid(): data = v.valid_data about = request.db(Content).get_by_alias('about') if not about: about = Content() about.con_alias = 'about' about.con_name = 'about' about.con_text = data.get("text") request.db.add(about) request.db.commit() action = data.getall('file.action') visible = data.getall('file.visible') order = data.getall('file.order') for i, id in enumerate(data.getall('file.id')): if action[i]: if action[i] == 'new': file = request.db(File).create('photo.jpg', module=module.name, entity=about) file.create_dir() file.update_uniq_id() photo = photos.pop(0) image_resize(photo).convert('RGB').save(file.get_fullpath()) else: file = request.db(File).get_by_id(id) file.visible = visible[i] file.order = order[i] if action[i] == 'delete': file.remove_files() request.db.delete(file) else: request.db.add(file) request.db.commit() return {"status": "ok", "reload": 'true'} else: return {"status": "fail", "errors": v.errors}