# coding: utf-8
import json
from ru.curs.celesta.showcase.utils import XMLJSONConverter
from security.functions import Settings

def usersDatapanel(context, main, session):
    u'''Продедура возвращает информационную панель для пункта "Сотрудники и пользователи"'''
    settings = Settings()

    data = {"datapanel":{"tab":{"@id":1,
                                "@name":u"Сотрудники и пользователи",
                                "element":[{"@id":"usersGrid",
                                            "@type":"grid",
                                            "@subtype":"JS_PAGE_GRID",
                                            "@plugin":"pageDGrid",
                                            "@proc":"security.grid.users.gridData.celesta",
                                            "proc":[{"@id":"usersGridMeta",
                                                     "@name":"security.grid.users.gridMeta.celesta",
                                                     "@type":"METADATA"
                                                     },
                                                     {"@id":"usersGridToolBar",
                                                      "@name":"security.grid.users.gridToolBar.celesta",
                                                      "@type":"TOOLBAR"
                                                     }]
                                            },
                                           {"@id":"usersXform",
                                            "@type":"xforms",
                                            "@template": "security/users.xml",
                                            "@neverShowInPanel":"true",
                                            "@proc":"security.xform.users.cardData.celesta",
                                            "proc":{"@id":"usersGridMeta",
                                                    "@name":"security.xform.users.cardDataSave.celesta",
                                                    "@type":"SAVE"
                                                    },
                                            "related":{"@id":"usersGrid"}
                                            },
                                           {"@id":"usersXformDelete",
                                            "@type":"xforms",
                                            "@template":"security/delete.xml",
                                            "@neverShowInPanel":"true",
                                            "@proc":"security.xform.usersDelete.cardData.celesta",
                                            "proc":{"@id":"id_roles_card_save",
                                                    "@name":"security.xform.usersDelete.cardDelete.celesta",
                                                    "@type":"SAVE"
                                                    },
                                            "related":{"@id":"usersGrid"}
                                            },
                                           {"@id":"usersRolesXform",
                                            "@type":"xforms",
                                            "@template":"security/usersRoles.xml",
                                            "@neverShowInPanel":"true",
                                            "@proc":"security.xform.usersRoles.cardData.celesta",
                                            "proc":{"@id":"usersRolesXformMeta",
                                                    "@name":"security.xform.usersRoles.cardDataSave.celesta",
                                                    "@type":"SAVE"
                                                    },
                                            "related":{"@id":"usersGrid"}
                                            }]
                                }
                         }
            }

    if not settings.loginIsSubject():
        # если роли привязываются к сотрудникам (субъекты тождественны сотрудникам),
        # добавляем в датапанель гриды и карточки для ведения таблицы subjects
        data["datapanel"]["tab"]["element"].extend([{"@id":"subjectsGrid",
                                                     "@type":"grid",
                                                     "@subtype":"JS_LIVE_GRID",
                                                     "@plugin":"liveDGrid",
                                                     "@proc":"security.grid.subjects.gridData.celesta",
                                                     "proc":[{"@id":"subjectsGridMeta",
                                                              "@name":"security.grid.subjects.gridMeta.celesta",
                                                              "@type":"METADATA"},
                                                             {"@id":"subjectsGridToolBar",
                                                              "@name":"security.grid.subjects.gridToolBar.celesta",
                                                              "@type":"TOOLBAR"}],
                                                     },
                                                    {"@id":"subjectsXform",
                                                     "@type":"xforms",
                                                     "@template": "security/subjects.xml",
                                                     "@neverShowInPanel":"true",
                                                     "@proc":"security.xform.subjects.cardData.celesta",
                                                     "proc":{"@id":"subjectsXformMeta",
                                                             "@name":"security.xform.subjects.cardDataSave.celesta",
                                                             "@type":"SAVE"},
                                                     "related":{"@id":"subjectsGrid"}
                                                     },
                                                    {"@id":"subjectsXformDelete",
                                                     "@type":"xforms",
                                                     "@template":"security/delete.xml",
                                                     "@neverShowInPanel":"true",
                                                     "@proc":"security.xform.subjectsDelete.cardData.celesta",
                                                     "proc":{"@id":"id_roles_card_save",
                                                             "@name":"security.xform.subjectsDelete.cardDelete.celesta",
                                                             "@type":"SAVE"},
                                                     "related":{"@id":"subjectsGrid"}
                                                     },
                                                     {"@id":"subjectsRolesXform",
                                                      "@type":"xforms",
                                                      "@template":"security/usersRoles.xml",
                                                      "@neverShowInPanel":"true",
                                                      "@proc":"security.xform.usersRoles.cardData.celesta",
                                                      "proc":{"@id":"usersRolesXformMeta",
                                                              "@name":"security.xform.usersRoles.cardDataSave.celesta",
                                                              "@type":"SAVE"},
                                                      "related":{"@id":"subjectsGrid"}
                                                      }])
    return XMLJSONConverter.jsonToXml(json.dumps(data))