def mutate_and_get_payload(cls, root, info, owner, labbook_name, description_content, client_mutation_id=None): username = get_logged_in_username() lb = LabBook(author=get_logged_in_author()) lb.from_name(username, owner, labbook_name) lb.description = description_content with lb.lock_labbook(): lb.git.add(os.path.join(lb.root_dir, '.gigantum/labbook.yaml')) commit = lb.git.commit('Updating description') # Create detail record adr = ActivityDetailRecord(ActivityDetailType.LABBOOK, show=False) adr.add_value('text/plain', "Updated description of LabBook") # Create activity record ar = ActivityRecord(ActivityType.LABBOOK, message="Updated description of LabBook", linked_commit=commit.hexsha, tags=["labbook"], show=False) ar.add_detail_object(adr) # Store ars = ActivityStore(lb) ars.create_activity_record(ar) return SetLabbookDescription(success=True)
def savehook(username, owner, labbook_name): try: redis_conn = redis.Redis(db=1) lb_key = '-'.join( ['gmlb', username, owner, labbook_name, 'jupyter-token']) changed_file = request.args.get('file') jupyter_token = request.args.get('jupyter_token') logger.info( f"Received save hook for {changed_file} in {username}/{owner}/{labbook_name}" ) r = redis_conn.get(lb_key.encode()) if r is None: logger.error(f"Could not find redis key `{lb_key}`") abort(400) if r.decode() != jupyter_token: raise ValueError("Incoming jupyter token must match key in Redis") lb = LabBook(author=get_logged_in_author()) lb.from_name(username, owner, labbook_name) logger.info(f"Jupyter save hook saving {changed_file} from {str(lb)}") with lb.lock_labbook(): lb.sweep_uncommitted_changes() return 'success' except Exception as err: logger.error(err) return abort(400)