Add support for exp/imp calendar module refs

This commit is contained in:
Denis Arh
2019-09-30 10:20:40 +02:00
parent 5601a09550
commit b892dbfd38
2 changed files with 67 additions and 2 deletions
+33 -2
View File
@@ -58,8 +58,16 @@ func Exporter(ctx context.Context, c *cli.Config) *cobra.Command {
}
}
roles, err = service.DefaultSystemRole.Find(ctx)
cli.HandleError(err)
// roles, err = service.DefaultSystemRole.Find(ctx)
// cli.HandleError(err)
// At the moment, we can not load roles from system service
// so we'll just use static set of known roles
//
// Roles are use for resolving access control
roles = sysTypes.RoleSet{
&sysTypes.Role{ID: 1, Handle: "everyone"},
&sysTypes.Role{ID: 2, Handle: "admins"},
}
modules, _, err := service.DefaultModule.Find(types.ModuleFilter{NamespaceID: ns.ID})
cli.HandleError(err)
@@ -473,6 +481,29 @@ func expPageBlocks(in types.PageBlocks, pages types.PageSet, modules types.Modul
})
out[i].Options["buttons"] = bb
} else if out[i].Kind == "Calendar" {
ff := make([]interface{}, 0)
_ = deinterfacer.Each(out[i].Options["feeds"], func(_ int, _ string, def interface{}) error {
feed := map[string]interface{}{}
_ = deinterfacer.Each(def, func(_ int, k string, v interface{}) error {
switch k {
case "moduleID":
if module := modules.FindByID(deinterfacer.ToUint64(v)); module != nil {
feed["module"] = makeHandleFromName(module.Name, module.Handle, "module-%d", module.ID)
}
default:
feed[k] = v
}
return nil
})
ff = append(ff, feed)
return nil
})
out[i].Options["feeds"] = ff
}
}
+34
View File
@@ -396,6 +396,40 @@ func (pImp *Page) resolveRefs(page *types.Page) error {
b.Options["buttons"] = bb
if err != nil {
return err
}
} else if b.Kind == "Calendar" {
ff := make([]interface{}, 0)
err := deinterfacer.Each(b.Options["feeds"], func(_ int, _ string, def interface{}) (err error) {
feed := map[string]interface{}{}
err = deinterfacer.Each(def, func(_ int, k string, v interface{}) error {
switch k {
case "module":
if m, err := pImp.getModule(deinterfacer.ToString(v)); err != nil || m == nil {
return errors.Errorf("could not load module %q for page %q block #%d (%v)",
v, page.Handle, i+1, err)
} else {
feed["moduleID"] = m.ID
}
default:
feed[k] = v
}
return nil
})
if err != nil {
return err
}
ff = append(ff, feed)
return nil
})
b.Options["feeds"] = ff
if err != nil {
return err
}