def get (self, service, registry_id, objeto=""): user = self.get_current_user() (registry_type, privacidade) = getType(registry_id) if not has_editable_permission(service): self.render("home.html", MSG=u"Serviço inválido.", REGISTRY_ID=registry_id, \ NOMEPAG='comunidades') return if service == "wiki" and objeto in ["home", "indice"]: service_perm = ( [(item, TXT_PERM[registry_type][item]) for item in ["acesso_activ","acesso_publico"]], [(item, TXT_PERM[registry_type][item]) for item in SERVICES[registry_type][service]["perm_w"]] ) elif privacidade == "Privada": service_perm = ( [(item, TXT_PERM[registry_type][item]) for item in ["acesso_privado", "acesso_grupos", "acesso_comunidade"]], [(item, TXT_PERM[registry_type][item]) for item in SERVICES[registry_type][service]["perm_w"]] ) else: service_perm = model.service_permissions (service, registry_type) groups = core.model.Registry().retrieve(registry_id).groups.keys() perm_id = '/'.join([service, registry_id, objeto]) self._perm = model.Permission().retrieve(perm_id) if not self._perm: self._perm = model.Permission(id=perm_id, \ leitura=model.default_permission("R", service, registry_type, privacidade), \ escrita=model.default_permission("W", service, registry_type, privacidade)) self.render("modules/permission/perm-edit.html", \ NOMEPAG=SERVICES[registry_type][service]["description"], \ REGISTRY_ID=registry_id, PERM_ID=perm_id, PERMDATA=self._perm, \ PATH=get_object_path(service, registry_id, objeto), \ SERVICE=service, GROUPS=groups, \ LEGENDA_R=SERVICES[registry_type][service]["legenda_perm_r"], \ LEGENDA_W=SERVICES[registry_type][service]["legenda_perm_w"], \ SERVICE_PERM=service_perm, \ MSG="")
def post(self, service, registry_id, objeto=""): user = self.get_current_user() registry_type = getType(registry_id)[0] user_data = _EMPTYCOMMUNITY() user_data.update(core.database.REGISTRY[registry_id]) groups = user_data["groups"].keys() grupos_r = [] grupos_w = [] for g in groups: if self.get_argument("escopo_R","")=="acesso_grupos" and self.get_argument("R_"+g, "") == "S": grupos_r.append(g) if self.get_argument("escopo_W","")=="acesso_grupos" and self.get_argument("W_"+g, "") == "S": grupos_w.append(g) leitura={"escopo":self.get_argument("escopo_R",""), "grupos":grupos_r} escrita={"escopo":self.get_argument("escopo_W",""), "grupos":grupos_w} data_agora = str(datetime.now()) perm_id = '/'.join([service, registry_id, objeto]) self._perm = model.Permission().retrieve(perm_id) if not self._perm: # Permissão não existe. Busco o owner do objeto. owner = objectOwnerFromService (service, registry_id, objeto) if owner==None: self.render("home.html", MSG=u"Serviço inválido.", REGISTRY_ID=registry_id, \ NOMEPAG='comunidades') return # crio a permissão deste objeto. self._perm = model.Permission(id=perm_id, \ owner=owner, \ service=service, registry_id=registry_id, nomeobj=objeto, \ data_cri = data_agora, \ leitura=leitura, escrita=escrita) else: self._perm.leitura = leitura self._perm.escrita = escrita self._perm.data_alt = data_agora self._perm.alterado_por = user self._perm.save() """ # notifica o dono da página alterada email_msg = u"Página alterada: "+doc_id+"\n"+\ Notify.assinatura(user, registry_id, self._wiki.historico[-1]["data_alt"])+"\n\n" Notify.email_notify(self._wiki.owner, user, u"alterou uma página criada por você", \ message=email_msg, \ link="wiki/"+doc_id) log.model.log(user, u'alterou a página', objeto=doc_id, tipo="wiki") self.redirect("/wiki/%s" % doc_id) """ self.render("modules/permission/perm-edit.html", \ NOMEPAG=SERVICES[registry_type][service]["description"], \ REGISTRY_ID=registry_id, PERM_ID=perm_id, PERMDATA=self._perm, \ MSG=u"Permissões alteradas", \ PATH=get_object_path(service, registry_id, objeto), \ SERVICE=service, GROUPS=groups, \ LEGENDA_R=SERVICES[registry_type][service]["legenda_perm_r"], \ LEGENDA_W=SERVICES[registry_type][service]["legenda_perm_w"], \ SERVICE_PERM=model.service_permissions (service, registry_type))