diff --git a/gerrit/utils.py b/gerrit/utils.py index 6367984..2486ebf 100644 --- a/gerrit/utils.py +++ b/gerrit/utils.py @@ -74,3 +74,7 @@ def get_change_info(id: str): def get_datetime(val: str) -> datetime.datetime: return datetime.datetime.strptime(val, gerrit_settings.DATETIME_FMT) + + +def get_gerrit_change_url(id: str, project: str) -> str: + return gerrit_settings.URL.format(f"c/{project}/+/{id}") diff --git a/repoapi/admin.py b/repoapi/admin.py index d5d3cd4..1bfa33a 100644 --- a/repoapi/admin.py +++ b/repoapi/admin.py @@ -13,6 +13,7 @@ # You should have received a copy of the GNU General Public License along # with this program. If not, see <http://www.gnu.org/licenses/>. from django.contrib import admin +from django.utils.html import format_html from django_admin_filters import DateRange from import_export import resources from import_export.admin import ImportExportModelAdmin @@ -60,6 +61,10 @@ class GRIDateRange(DateRange): class GerritRepoInfoAdmin(ImportExportModelAdmin): resource_class = GerritRepoInfoResource list_filter = (("modified", GRIDateRange), "projectname", "param_ppa") + readonly_fields = ("gerrit_url",) + + def gerrit_url(self, obj): + return format_html("<a href='{url}'>{url}</a>", url=obj.gerrit_url) class WorkfrontNoteInfoResource(resources.ModelResource): diff --git a/repoapi/models/gri.py b/repoapi/models/gri.py index 1533d70..cb45fec 100644 --- a/repoapi/models/gri.py +++ b/repoapi/models/gri.py @@ -19,6 +19,7 @@ from django_extensions.db.fields import ModificationDateTimeField from ..tasks import jenkins_remove_project from ..utils import jenkins_remove_ppa +from gerrit.utils import get_gerrit_change_url logger = structlog.get_logger(__name__) @@ -64,6 +65,10 @@ class GerritRepoInfo(models.Model): class Meta: unique_together = ["param_ppa", "gerrit_change"] + @property + def gerrit_url(self): + return get_gerrit_change_url(self.gerrit_change, self.projectname) + def __str__(self): return "{}:{}:{}".format( self.param_ppa, self.gerrit_change, self.projectname