in app/registry/view.go [22:85]
func (a *App) viewRegistry(ctx *gin.Context) (router.Response, error) {
userCtx := router.ContextWithUserAccessToken(ctx)
registryName := ctx.Param("name")
values, err := GetValuesFromGit(registryName, MasterBranch, a.Services.Gerrit)
if err != nil {
return nil, errors.Wrap(err, "unable to get values from git")
}
valuesJson, err := json.Marshal(values)
if err != nil {
return nil, errors.Wrap(err, "unable to encode values")
}
viewParams := gin.H{
"timezone": a.Config.Timezone,
"values": values,
"valuesJson": string(valuesJson),
}
mrs, err := a.Services.Gerrit.GetMergeRequestByProject(userCtx, registryName)
if err != nil {
return nil, fmt.Errorf("unable to get merge reqyests by project, %w", err)
}
cbService, err := a.Services.Codebase.ServiceForContext(userCtx)
if err != nil {
return nil, fmt.Errorf("unable to init service for user context, %w", err)
}
reg, err := cbService.Get(registryName)
if err != nil {
return nil, fmt.Errorf("unable to get registry by name: %s, %w", registryName, err)
}
hasUpdate, _, registryVersion, err := HasUpdate(userCtx, a.Services.Gerrit, reg, MRTargetRegistryVersionUpdate)
if err != nil {
return nil, fmt.Errorf("unable to check for updates, %w", err)
}
if is, redirect := isVersionRedirect(ctx, "/admin/registry/view", reg.Name, registryVersion); is {
return redirect, nil
}
viewParams["hasUpdate"] = hasUpdate
for _, f := range a.viewRegistryProcessFunctions(mrs) {
if err := f(userCtx, reg, values, viewParams); err != nil {
return nil, errors.Wrap(err, "error during view registry function")
}
}
templateArgs, err := json.Marshal(viewParams)
if err != nil {
return nil, errors.Wrap(err, "unable to encode template arguments")
}
return router.MakeHTMLResponse(200, "registry/view.html", gin.H{
"page": "registry",
"registryVersion": MajorVersion(registryVersion.Core().Original()),
"templateArgs": string(templateArgs),
}), nil
}