def on_identity_loaded(sender, identity): identity.user = current_user if hasattr(current_user, 'role'): if current_user.get_role() == customer: identity.provides.add(customer_role) if current_user.get_role() == member: identity.provides.add(customer_role) identity.provides.add(member_role) if current_user.get_role() == admin: identity.provides.add(customer_role) identity.provides.add(member_role) identity.provides.add(admin_role)
def get_current_user_dashboard(): """ Returns a url_for object, for the current user's dashboard page. """ # Redirect them to their dashboard page. if current_user.get_role() == "STU": # Student return url_for('student.dashboard') elif current_user.get_role() == "STA": # Staff return url_for('staff.dashboard') elif current_user.get_role() == "TUT": # Tutor return url_for('tutor.dashboard')
def staged_files(): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) path = request.url_root if path.startswith("http://"): path = path.replace("http://", "") if path.startswith("https://"): path = path.replace("https://", "") if path.endswith("/"): path = path[:-1] if ":" in path: splitz = path.split(":") # if path.startswith("https://"): # path = splitz[0] + ":" + splitz[1] # else: path = splitz[0] # TODO: Can make this a config option that allows us to exclude certain addresses for external port config # Allows us to have a different port for LAN and WAN - may be necessary with certain configs if path.startswith("10") or path.startswith("127"): port = "22" else: port = current_app.config["EXTERNAL_SFTP_PORT"] return render_template("staged_files.html", title="My Files", path=path, port=port)
def display_pipeline_instances(page=1): if current_user.get_role() == "Site Admin": obs = PipelineInstance.query.paginate(page=page, per_page=20) else: obs = current_user.group.pipeline_instances.paginate(page=page, per_page=20) return render_template("pipeline_instances.html", title="Pipeline Instances", page=page, obs=obs)
def index(): if current_user.is_authenticated(): if current_user.get_role() == "1": appslist = UserDetail.query.filter_by(uid=current_user.get_id()).order_by(db.desc(UserDetail.website)) return render_template("index.html", appslist=appslist) return render_template("welcome.html")
def remove_document(oid="", did=""): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) if oid == "" or did == "": flash("Incorrect arguments for query provided", "error") return redirect(url_for("index")) doc = None pro = None projects = current_user.group.projects.all() for project in projects: documents = project.documents for document in documents: if document.display_key == did: doc = document pro = project if doc is None: flash("Incorrect arguments for query provided", "error") return redirect(url_for("index")) filepath = os.path.join(os.path.join(utils.get_path("project_data", "webserver"), pro.display_key), doc.name) if os.path.exists(filepath): os.remove(filepath) doc.delete() return redirect(url_for("manage.project", oid=oid))
def restart_pipeline(oid="", force=0): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) if force != 1: return render_template("confirm.html", message="Are you sure you wish to restart the current pipeline?", oid=oid, url="pipelines.restart_pipeline") if oid == "": flash("Could not load the provided pipeline instance", "error") return redirect(url_for("empty")) pipeline_instance = current_user.group.pipeline_instances.filter_by(display_key=oid).first() if pipeline_instance is None: flash("Could not load the provided pipeline instance", "error") return redirect(url_for("empty")) pipeline_instance.update(current_execution_status="STOPPED") # TODO - If module is running parse for job id and kill all data_source = pipeline_instance.data_consignor data_source.run_pipelines.append(pipeline_instance) data_source.update(running_pipeline=None) flash("The previous pipeline has been removed, follow the instructions below to restart.", "success") return redirect(url_for("pipelines.build_pipeline_instance", pid=pipeline_instance.pipeline.display_key, oid=data_source.display_key, runtime_type=data_source.type))
def decorated_view(*args, **kwargs): if not current_user.is_authenticated(): return current_app.login_manager.unauthorized() urole = current_user.get_role() if ( (urole != role) and (role != "ANY")): flash(u'Du har inte behörighet att göra detta.', 'primary') return redirect(url_for("index")) return fn(*args, **kwargs)
def decorated_view(*args, **kwargs): if not current_user.is_authenticated or \ not current_user.is_authenticated(): return current_app.login_manager.unauthorized() urole = current_user.get_role() if (roles and (urole not in roles)): flask_abort(403) return fn(*args, **kwargs)
def index(): if current_user.is_authenticated(): if current_user.get_role() == '1': appslist = userdetail.query \ .filter_by(uid=current_user.get_id()) \ .order_by(db.desc(userdetail.website)) return render_template('index.html', appslist=appslist) return render_template('welcome.html')
def decorated_view(*args, **kwargs): if not current_user.is_authenticated or \ not current_user.is_authenticated(): return current_app.login_manager.unauthorized() urole = current_user.get_role() if (roles and (urole not in roles)): flask_abort(403) return fn(*args, **kwargs)
def index(): if current_user.is_authenticated(): if current_user.get_role() == '1': appslist = UserDetail.query \ .filter_by(uid=current_user.get_id()) \ .order_by(db.desc(UserDetail.website)) return render_template('index.html', appslist=appslist) return render_template('welcome.html')
def on_identity_loaded(sender,identity): identity.user = current_user identity.provides.add(UserNeed(current_user.get_id())) for role in current_user.get_role(): identity.provides.add(RoleNeed(role)) for project in current_user.get_project(): identity.provides.add(edit_project_need(project))
def submissions(page=1): if current_user.get_role() == "Site Admin": items = Submission.query.filter_by(validated=True) else: items = current_user.group.submissions.filter_by(validated=True) if items is not None: items = items.paginate(page=page, per_page=20) return render_template("submissions.html", title="Submissions", page=page, obs=items)
def data_groups(page=1): if current_user.get_role() == "Site Admin": items = DataGroup.query.filter(DataGroup.pipeline_source != None) else: items = current_user.group.data_groups.filter(DataGroup.pipeline_source != None) if items is not None: items = items.paginate(page=page, per_page=20) return render_template("data_groups.html", title="Data Groups", page=page, obs=items)
def projects(page=1): if current_user.get_role() == "Site Admin": items = Project.query else: items = current_user.group.projects if items is not None: items = items.paginate(page=page, per_page=20) return render_template("projects.html", title="Projects", page=page, obs=items)
def samples(page=1): if current_user.get_role() == "Site Admin": items = Sample.query else: items = current_user.group.samples if items is not None: items = items.paginate(page=page, per_page=20) return render_template("samples.html", title="Samples", page=page, obs=items)
def decorated_view(*args, **kwargs): if current_app.login_manager._login_disabled: return func(*args, **kwargs) if not current_user.is_authenticated(): return current_app.login_manager.unauthorized() if (len(roles) > 0) and (current_user.get_role() not in roles): logout_user() return current_app.login_manager.unauthorized() return func(*args, **kwargs)
def decorated_view(*args, **kwargs): if current_app.login_manager._login_disabled: return func(*args, **kwargs) if not current_user.is_authenticated(): return current_app.login_manager.unauthorized() usuario_role = current_user.get_role() if (len(roles) > 0) and (usuario_role not in roles): logout_user() return current_app.login_manager.unauthorized() return func(*args, **kwargs)
def decorated_view(*args, **kwargs): # Ensure the current user is actually authenticated. if not current_user.is_authenticated: # The user is not authenticated. return login_manager.unauthorized() # If roles has been set to a list or tuple. if roles and isinstance(roles, (list, tuple)): # Check that the user's role is in roles. user_role = current_user.get_role() if user_role not in roles: return unauthorized_role() return func(*args, **kwargs)
def display_pipeline_instance(oid=""): if oid == "": flash("Could not identify the provided pipeline run", "warning") return redirect(url_for("index")) if current_user.get_role() == "Site Admin": pipeline_instance = PipelineInstance.query.filter_by(display_key=oid).first() else: pipeline_instance = current_user.group.pipeline_instances.filter_by(display_key=oid).first() if pipeline_instance is None: flash("Could not locate the provided pipeline instance", "warning") return redirect(url_for("empty")) return render_template("pipeline_instance.html", title="Pipeline Instance", pipeline_instance=pipeline_instance)
def add_detail(): if current_user.get_role() == '1': form = DetailForm() if form.validate_on_submit(): _detail = UserDetail(form.name.data, form.street.data, form.city.data, form.phone.data, form.website.data, date.today(), current_user.get_id()) _detail.date = datetime.now() db.session.add(_detail) db.session.commit() flash(u'Your details were submitted succsessfully.') return redirect(url_for('index')) return render_template('add_detail.html', form=form) return redirect(url_for('index'))
def sample(oid=""): if oid == "": flash("Could not locate the provided sample", "warning") return redirect(url_for("empty")) if current_user.get_role() == "Site Admin": sample = Sample.query.filter_by(display_key=oid).first() else: sample = current_user.group.samples.filter_by(display_key=oid).first() if sample is None: flash("Could not locate the provided sample", "warning") return redirect(url_for("empty")) return render_template("sample.html", title="Sample " + sample.name, sample=sample)
def module_instance(pid="", oid=""): if pid == "" or oid == "": flash("No instance identifiers were provided.", "warning") return redirect(url_for("empty")) if current_user.get_role() == "Site Admin": pipeline_instance = PipelineInstance.query.filter_by(display_key=pid).first() else: pipeline_instance = current_user.group.pipeline_instances.filter_by(display_key=pid).first() if pipeline_instance is None: flash("Could not identify the module parent", "warning") return redirect(url_for("index")) m_instance = None module_instances = pipeline_instance.module_instances.all() for module_instance in module_instances: if module_instance.display_key == oid: m_instance = module_instance break if m_instance is None: flash("Could not locate the provided module instance", "warning") return redirect(url_for("empty")) # Conditionally index the module files so that we can view them on the web page whilst executing - if the module is done (for whatever reason) instead, make use of the indexed files files = [] if pipeline_instance.current_execution_status != "FINISHED" and pipeline_instance.current_execution_status != "STOPPED" and pipeline_instance.current_execution_status != "ERROR": local_pipeline_directory = os.path.join(utils.get_path("pipeline_data", "webserver"), pipeline_instance.display_key) local_module_directory = os.path.join(os.path.join(local_pipeline_directory, "modules_output"), m_instance.module.name) filepaths = next(os.walk(local_module_directory)) for file in filepaths[1]: path = os.path.join(os.path.join(os.path.join(pipeline_instance.display_key, "modules_output"), m_instance.display_key), file) files.append({ "name": file, "path": path }) for file in filepaths[2]: path = os.path.join(local_module_directory, file) files.append({ "name": file, "path": path }) return render_template("module_instance.html", title="Module Instance", module_instance=m_instance, files=files)
def new_project(): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) from biocomputedm.manage import forms form = forms.NewProjectForm() if request.method == "GET": return render_template("new_project.html", title="New Project", form=form) else: if form.validate_on_submit(): project = Project.create(name=str(form.investigation_name.data), description=str(form.investigation_description.data), creator=current_user) utils.make_directory(os.path.join(utils.get_path("project_data", "webserver"), project.display_key)) flash("Project successfully registered.", "info") return redirect(url_for("manage.project", oid=project.display_key)) return render_template("new_project.html", title="New Project", form=form)
def show_users(page=1, oid=""): if current_user.get_role() == "Site Admin": u = Person.query.paginate(page=page, per_page=20) else: if oid != "": p = current_user.group.members.filte_by(display_key=oid).first() if p is not None: p.set_role("Group Admin") p.save() if current_user.type == "Customer": u = current_user.group.members.order_by(Person.role).paginate(page=page, per_page=20) else: u = current_user.group.members.order_by(Person.role).paginate(page=page, per_page=20) return render_template("people.html", title="Users", page=page, obs=u)
def add_document(oid=""): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) if oid == "": flash("Incorrect arguments for query provided", "error") return redirect(url_for("index")) project = current_user.group.projects.filter_by(display_key=oid).first() if project is None: flash("Could not identify the provided project.", "error") return redirect(url_for("index")) from biocomputedm.manage import forms form = forms.AddDocumentForm() if request.method == "POST": if form.validate_on_submit(): # Handle maliciously named files (i.e. ../..) from werkzeug.utils import secure_filename filename = secure_filename(form.file_upload.data.filename).replace(" ", "_") filepath = os.path.join(os.path.join(utils.get_path("project_data", "webserver"), project.display_key), filename) # Handle a document already existing if os.path.exists(filepath): flash("A document with this location (i.e. filename) already exists", "error") return redirect(url_for("projects")) # Save the file to the given path form.file_upload.data.save(filepath) # Save the document to the db document = Document.create(name=filename, description=str(form.description.data)) project.documents.append(document) project.save() # Inform and redirect flash("Document uploaded successfully", "success") return redirect(url_for("manage.project", oid=oid)) # Fail scenario return render_template("add_document.html", title="Add Document", form=form, oid=oid)
def add_detail(): if current_user.get_role() == '1': form = DetailForm() if form.validate_on_submit(): _detail = UserDetail( form.name.data, form.street.data, form.city.data, form.phone.data, form.website.data, date.today(), current_user.get_id() ) _detail.date = datetime.now() db.session.add(_detail) db.session.commit() flash(u'Your details were submitted succsessfully.') return redirect(url_for('index')) return render_template('add_detail.html', form=form) return redirect(url_for('index'))
def delete_sample(oid="", force=0): if force != 1: return render_template( "confirm.html", message="Are you sure you wish to remove this sample?", oid=oid, url="manage.delete_sample" ) if oid == "": flash("No instance identifiers were provided.", "warning") return redirect(url_for("empty")) if current_user.get_role() == "Site Admin": sample = Sample.query.filter_by(display_key=oid).first() else: flash("You do not have permission to do this.", "warning") return redirect(url_for("index")) if sample is None: flash("Could not identify the sample", "warning") return redirect(url_for("index")) for data in sample.data: data_group = data.data_group data.delete() if data_group.data is None or not data_group.data: data_group.delete() sample.delete() subprocess.Popen( [ "sudo", os.path.join(os.path.join(utils.get_path("scripts", "webserver"), "io"), "delete.sh"), "-s=" + os.path.join(utils.get_path("sample_data", "webserver"), oid) ] ) flash("Sample was deleted successfully", "success") return redirect(url_for("manage.samples"))
def project(oid="", did=""): if oid == "": flash("Could not identify the provided project.", "error") return redirect(url_for("index")) if current_user.get_role() == "Site Admin": project = Project.query.filter_by(display_key=oid).first() else: project = current_user.group.projects.filter_by(display_key=oid).first() if project is None: flash("Could not identify the provided project.", "error") return redirect(url_for("index")) if did != "": for document in project.documents: if document.display_key == did: return send_from_directory(os.path.join(utils.get_path("project_data", "webserver"), project.display_key), document.name, as_attachment=True, attachment_filename=document.name) return render_template("project.html", title="Project", project=project)
def check_role(self): """ Check if the current user has the required role to access this view. If the function returns: True : User has the required role/permission to access this page. False: User does not have required role/permission to access this page. Available roles: anon - not logged in user viewer - is the default role of a logged in user. provider - Ad space provider, who will have access to add their media to the system. buyer - Consumer looking for ad spaces, has access to the search module. subscriber - A subscribed user """ if not self.required_roles or not self.available_roles: return True elif current_user.is_authenticated(): current_user_role = current_user.get_role() if current_user_role in self.available_roles: if current_user_role==self.admin_role or current_user_role in self.required_roles: return True return False
def remove_submission(oid="", force=0): if force != 1: return render_template( "confirm.html", message="Are you sure you wish to remove this submission?", oid=oid, url="manage.remove_submission" ) if oid == "": flash("Could not identify the provided object", "warning") return redirect(url_for("manage.submissions")) if current_user.get_role() == "Site Admin": submission = Submission.query.filter_by(display_key=oid).first() else: submission = current_user.group.submissions.filter_by(display_key=oid).first() if submission is None: flash("Could not identify the provided object", "warning") return redirect(url_for("manage.submissions")) # Execute our delete script synchronously script_path = os.path.join(utils.get_path("scripts", "webserver"), "io") script_path = os.path.join(script_path, "delete.sh") source = os.path.join(utils.get_path("submission_data", "webserver"), submission.display_key) subprocess.Popen( [ "sudo", script_path, "-s=" + source ] ).wait() submission.delete() flash("Submission deletion was successful", "success") return redirect(url_for("manage.submissions"))
def finish_pipeline(oid="", force=0): if current_user.get_role() == "Site Admin": return redirect(url_for("content.activity")) if force != 1: return render_template("confirm.html", message="Are you sure you wish to quit the current pipeline?", oid=oid, url="pipelines.finish_pipeline") if oid == "": flash("Could not load the provided pipeline instance", "error") return redirect(url_for("empty")) pipeline_instance = current_user.group.pipeline_instances.filter_by(display_key=oid).first() if pipeline_instance is None: flash("Could not load the provided pipeline instance", "error") return redirect(url_for("empty")) pipeline_instance.update(current_execution_status="STOPPED") flash("The pipeline was stopped and disassociated with your parent data set", "success") return redirect(url_for("index"))
def copy_to_staging_drive(oid="", data_type="", move_type=""): if move_type == "": return render_template("transfer_target.html", oid=oid, data_type=data_type) if current_user.get_role() == "Site Admin": return redirect(url_for("activity")) if oid == "": flash("Could not identify the provided object.", "warning") return redirect(url_for("index")) if data_type != "pipeline_output" and data_type != "pipeline_sample_group" and data_type != "project_sample_group" and data_type != "project_pipeline_output" and data_type != "sample": flash("Could not identify the object type.", "warning") return redirect(url_for("index")) from biocomputedm.manage.helpers.manage_helper import copy_data_to_staging if move_type == "self": copy_data_to_staging(current_app._get_current_object(), oid, data_type, current_user.display_key) else: copy_data_to_staging(current_app._get_current_object(), oid, data_type, current_user.display_key, "yes") flash("Your files are now being moved to a secure location. This may take some time to complete. You will receive an email when this process is finished.", "success") return redirect(url_for("index"))
def login(): # Ensure the current user's not authenticated and redirect appropriately if so if current_user is not None and current_user.is_authenticated(): role = current_user.get_role() if role == 'admin': return redirect(url_for('admin_cp')) elif role == 'instructor': return redirect(url_for('instructor_cp')) elif role == 'ta': return redirect(url_for('ta_cp')) elif role == 'student': return redirect(url_for('student_cp')) else: return "Everybody's special." # Validate credentials if request.method == 'POST': username = request.form['username'] password = request.form['password'] hashed_pwd = User.get(username) if hashed_pwd and check_login(username, password): user = User(username) login_user(user) if user.get_role() == 'admin': return redirect(url_for('admin_cp')) elif user.get_role() == 'student': return redirect(url_for('student_cp')) elif user.get_role() == 'ta': return redirect(url_for('ta_cp')) elif user.get_role() == 'instructor': return redirect(url_for('instructor_cp')) else: return redirect(url_for('hello_world')) else: return redirect(url_for('login')) return render_template('login.html')
def wrapped(*args, **kwargs): if current_user.get_role() not in roles: return login_manager.unauthorized() return f(*args, **kwargs)
def show(self, action, media_id=None): """ Render respective templates for the static page""" # default page content and template try: data = {} media_template = "view" # Changing collection for listing media items added through the ad-publisher page if request.args.get("unverified-media-items") or request.args.get( "unverified-media-item"): data.update({"unverified_items": True}) else: data.update({"unverified_items": False}) # === if action == "view": MC = MediaController() if data["unverified_items"] == True: MC.change_collection(name="media_items", new_col_name="public_media_items") if request.args.get("get") == "industries": # return the list of industries as an array return self.json_out(MC.get_industries(as_list=True)) elif request.args.get("get") == "geographies": return self.json_out(MC.get_geographies(as_list=True)) elif media_id and current_user.is_authenticated(): # Show a single media item with all its info media_template = "single-view" media_item = {} conditions = {"_id": media_id} # prevent non-admin, non-owner users from viewing a media item if not current_user.get_role() == self.admin_role: conditions.update({"owner": current_user.get_id()}) # === for item in MC.get_media_items(conditions=conditions): for key, value in item.iteritems(): if type(value) is list: value = ", ".join(value) elif key == "customer_type" and value == "both": value = "Both B2B and B2C" media_item.update({key: value}) data.update({"media_item": media_item}) elif current_user.is_authenticated(): # List all media items, accessible ONLY to admins or display all provider media items. # Each media item should/will have an "owner" attribute, which is the user ID of the # user adding the media item. conditions = {} # if not an admin, only items owned by the user are displayed if not current_user.get_role() == self.admin_role: conditions.update({"owner": current_user.get_id()}) # === # Apply filters if any if request.args.get("filter") and request.args.get("name"): data.update({ "filter": { "business": request.args.get("name").strip() } }) conditions.update( {"name": request.args.get("name").strip()}) # === data.update({"media_items": []}) media_items = MC.get_media_items(conditions=conditions) if len(media_items) > 0: data["media_items"] = media_items elif action == "add" and current_user.is_authenticated(): MC = MediaController() media_template = "add" AMF = AddMediaForm(request.form) AMF.demography.choices = [ (x.strip(), x.strip()) for x in MC.get_demographies(as_list=True) ] if request.form: if data["unverified_items"] == True: MC.change_collection(name="media_items", new_col_name="public_media_items") if AMF.validate(): data.update({ "message": MC.add_media_item( MC.prepare_media_item( form_data=AMF.data))["message"], "status": "success" }) else: data.update({ "message": "There were some errors", "status": "failed" }) data.update({"add_form": AMF}) elif action == "public-add": ajx_resp = False MC = MediaController() # return the list of industries as an array if request.args.get("get") == "industries": return self.json_out(MC.get_industries(as_list=True)) # return the list of geographies as an array elif request.args.get("get") == "geographies": return self.json_out(MC.get_geographies(as_list=True)) if request.args.get("next") == "show-form": data.update({"show_add_form": True}) if request.args.get("ajax-response") == "true": ajx_resp = True self.required_roles = [] media_template = "public-add" AMF = AddMediaForm(request.form) AMF.demography.choices = [ (x.strip(), x.strip()) for x in MC.get_demographies(as_list=True) ] if request.form: # Remove required validator from fields AMF.price = AMF.removeValidators(AMF.price, ["DataRequired"]) AMF.market_goal = AMF.removeValidators( AMF.market_goal, ["DataRequired"]) AMF.customer_type = AMF.removeValidators( AMF.customer_type, ["DataRequired"]) AMF.campaign_length = AMF.removeValidators( AMF.campaign_length, ["DataRequired"]) AMF.provider_industry = AMF.removeValidators( AMF.provider_industry, ["DataRequired"]) AMF.viewership_industry = AMF.removeValidators( AMF.viewership_industry, ["DataRequired"]) AMF.demography = AMF.removeValidators( AMF.demography, ["DataRequired"]) AMF.geography = AMF.removeValidators( AMF.geography, ["DataRequired"]) AMF.ad_name = AMF.removeValidators(AMF.ad_name, ["DataRequired"]) AMF.description = AMF.removeValidators( AMF.description, ["DataRequired"]) # == status = {"message": "", "status": "success"} if AMF.validate(): MC = MediaController() MC.change_collection(name="media_items", new_col_name="public_media_items") try: if session["media-id"]: result = MC.update_media_item( media_item=MC.prepare_media_item( form_data=AMF.data, no_owner=True), media_id=session["media-id"], conditions=None) else: result = MC.add_media_item( MC.prepare_media_item(form_data=AMF.data, no_owner=True)) session["media-id"] = result["_id"] except KeyError: result = MC.add_media_item( MC.prepare_media_item(form_data=AMF.data, no_owner=True)) session["media-id"] = result["_id"] if request.args.get("complete") and request.args.get( "complete") == "true": session.clear() status = { "message": result["message"], "status": result["status"] } else: status = { "message": "There were some errors", "status": "failed", "errors": AMF.errors } if ajx_resp: return self.json_out(status) data.update(status) data.update({"add_form": AMF}) elif action == "edit" and media_id and current_user.is_authenticated( ): MC = MediaController() media_template = "edit" AMF = AddMediaForm(request.form) AMF.demography.choices = [ (x.strip(), x.strip()) for x in MC.get_demographies(as_list=True) ] if data["unverified_items"] == True: MC.change_collection(name="media_items", new_col_name="public_media_items") if request.args.get("save"): if AMF.validate(): conditions = None # prevent any non-admin, non-owner from updating a media item if not current_user.get_role() == self.admin_role: conditions = {"owner": current_user.get_id()} # === data.update({ "message": MC.update_media_item( media_item=MC.prepare_media_item( form_data=AMF.data), media_id=media_id, conditions=conditions)["message"], "status": "success" }) else: data.update({"message": "Error", "status": "failed"}) else: media_item = {} # the fields mentioned here will be converted to a comma seperated string from list fields_to_join = [ "viewership_industry", "provider_industry", "select_markets" ] # == conditions = {"_id": media_id} if not current_user.get_role() == self.admin_role: conditions.update({"owner": current_user.get_id()}) for item in MC.get_media_items(conditions=conditions): for key, value in item.iteritems(): if key in fields_to_join: value = ", ".join(value) media_item.update({key: value}) for field, value in AMF.data.items(): if field in media_item: AMF[field].data = media_item[field] media_item["geography"] media_item["demography"] data.update({"add_form": AMF}) data.update({"media_id": media_id}) return self.render("media/" + media_template + ".html", data=data) except Exception as e: self.error_handle.get_error( error=str(e), occurred_at="mad.modules.MediaView.show()") abort(401)
def is_accessible(self): if current_user.get_role() == '0': return current_user.is_authenticated()