Beispiel #1
0
 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="")
Beispiel #2
0
    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))