Source code for solidipes.reports.widgets.gitlab_issues

#!/bin/env python
################################################################
import os

import gitlab
import streamlit as st

from solidipes.utils.git_infos import GitInfos

################################################################


[docs] class GitlabIssues: def __init__(self, layout): self.git_infos = GitInfos() self.layout = layout self.layout_container = layout.container() if "PROJECT_NAME" not in os.environ: split = self.git_infos.origin.split("/") project_name = split[-1] user_name = split[-2] repo_uri = self.git_infos.origin.split(user_name + "/" + project_name)[0] os.environ["REPO_URI"] = repo_uri os.environ["USER_NAME"] = user_name os.environ["PROJECT_NAME"] = project_name else: project_name = os.environ["PROJECT_NAME"] repo_uri_and_user_name = self.git_infos.origin.split("/" + project_name)[0] user_name = repo_uri_and_user_name.split("/")[-1] repo_uri = repo_uri_and_user_name.split("/" + user_name)[0] os.environ["USER_NAME"] = user_name os.environ["REPO_URI"] = repo_uri project_name = os.environ["PROJECT_NAME"] repo_uri = os.environ["REPO_URI"] gl = gitlab.Gitlab(repo_uri) try: self.project = gl.projects.get(user_name + "/" + project_name) except gitlab.GitlabGetError: self.project = None except Exception as err: print(err) self.project = None
[docs] def show(self): if self.project is None: return issues = self.project.issues.list(state="opened") if len(issues) == 0: return opened_issues = 0 for issue in issues: if issue.state == "open": opened_issues if len(issues) == 0: return self.layout_container.markdown("## Reviews & Issues") for issue in issues: with self.layout_container.expander(issue.title, expanded=True): col1, col2 = st.columns(2) col1.image(f'{issue.author["avatar_url"]}') col2.markdown(f"### {issue.title}") col2.markdown(f'*Author: {issue.author["name"]}*') st.markdown(issue.description) st.markdown("---") st.markdown(f"### :speech_balloon:    [**Please reply to the requests**]({issue.web_url})")