[cpif] r331 - in trunk: . backend frontend-web frontend-web/skins/default

svn at argo.es svn at argo.es
Thu Sep 6 15:28:13 CEST 2007


Author: jcea
Date: Thu Sep  6 15:28:10 2007
New Revision: 331

Log:
Soporte preliminar de hilos "sticky". Hay que
actualizar el "skin" para visualizarlos de forma
diferenciada.



Added:
   trunk/frontend-web/url_toggle_sticky.py
      - copied, changed from r330, /trunk/frontend-web/url_toggle_readonly.py
Modified:
   trunk/TODO
   trunk/backend/database.py
   trunk/backend/upgrade.py
   trunk/frontend-web/skins.py
   trunk/frontend-web/skins/default/body_show_thread.html
   trunk/frontend-web/skins/default/body_show_thread_anonymous.html

Modified: trunk/TODO
==============================================================================
--- trunk/TODO	(original)
+++ trunk/TODO	Thu Sep  6 15:28:10 2007
@@ -334,8 +334,25 @@
   "solo lectura" y para eliminar la opcion de escribir respuesta.
 
 - 20070906: FRONTAL WEB: El cambio de estado de "solo lectura"
-  debe hacerse por AJAX.
+  debe hacerse por AJAX. Baja prioridad.
 
 - 20070906: La comprobacion de moderadores requiere normalizar
   los nicks cada vez.
+
+- 20070906: Un hilo "sticky" lo es en todos los metatags a los
+  que pertenece. Asi que si un moderador cambia el estado "sticky"
+  de un hilo en varios metatags, cambia en todos, auqnue en los
+  otros metatags no sea moderador. Adicionalmente, un moderador
+  de un metatag puede poner un hilo como "sticky" en cualquier
+  otro metatag si el hilo existe en su metatag.
+
+  Estas cosas seran potencialmente muy delicadas cuando cualquier
+  usuario pueda crear hilos sinteticos. Hay que estudiarlo con
+  cuidado.
+
+- 20070906: FRONTAL WEB: Modificar el skin para visualizar
+  los hilos "sticky" de forma diferenciada.
+
+- 20070906: FRONTAL WEB: El cambio de estado de "sticky"
+  debe hacerse por AJAX. Baja prioridad.
 

Modified: trunk/backend/database.py
==============================================================================
--- trunk/backend/database.py	(original)
+++ trunk/backend/database.py	Thu Sep  6 15:28:10 2007
@@ -1,7 +1,7 @@
 # $Id$
 
 
-VERSION_DB="2007090601"
+VERSION_DB="2007090602"
 
 import globales
 
@@ -347,6 +347,7 @@
                                                "TS2hilo":BTree(),
                                                "moderadores":moderadores,
                                                "monitor":BTree(),
+                                               "sticky_threads":set(),
                                               })
 
   for usuario in root["usuarios"]["usuarios"].itervalues() :
@@ -634,7 +635,7 @@
   u["monitor hilos"][thread]=None
   return None,True
 
-def check_moderator_or_master_status(conn,usuario,num_thread) :
+def check_thread_moderator_or_master_status(conn,usuario,num_thread) :
   root=conn.get_root()
   hilos=root["hilos"]["hilos"]
   metatags=root["metatags"]["metatags"]
@@ -647,7 +648,10 @@
   return False
 
 def check_permissions_readonly(conn,usuario,num_thread) :
-  return check_moderator_or_master_status(conn,usuario,num_thread)
+  return check_thread_moderator_or_master_status(conn,usuario,num_thread)
+
+def check_permissions_sticky(conn,usuario,num_thread) :
+  return check_thread_moderator_or_master_status(conn,usuario,num_thread)
 
 def thread_is_readonly(conn,hilo) :
   root=conn.get_root()
@@ -662,4 +666,25 @@
     return False
   hilo["read only"]=None
   return True
+
+
+def toogle_thread_sticky(conn,num_thread) :
+  root=conn.get_root()
+  hilo=root["hilos"]["hilos"][num_thread]
+  metatags=root["metatags"]["metatags"]
+  somebody_sticky=False
+  somebody_no_sticky=False
+  for metatag in hilo["metatags"] :
+    metatag=metatags[metatag]
+    sticky=metatag["sticky_threads"]
+    if num_thread in sticky :
+      somebody_sticky=True
+      sticky.discard(num_thread)
+    else :
+      somebody_no_sticky=True
+      sticky.add(num_thread)
+    metatag._p_note_change() # Durable
+
+  assert somebody_sticky!=somebody_no_sticky
+  return not somebody_sticky
 

Modified: trunk/backend/upgrade.py
==============================================================================
--- trunk/backend/upgrade.py	(original)
+++ trunk/backend/upgrade.py	Thu Sep  6 15:28:10 2007
@@ -298,3 +298,10 @@
     root["version del foro"]="2007090601"
     conn.commit()
 
+  if root["version del foro"]=="2007090601" :
+    print "Actualizando la base de datos: 2007090601 -> 2007090602"
+    root["version del foro"]="2007090602"
+    for metatag in root["metatags"]["metatags"].values() :
+      metatag["sticky_threads"]=set()
+    conn.commit()
+

Modified: trunk/frontend-web/skins.py
==============================================================================
--- trunk/frontend-web/skins.py	(original)
+++ trunk/frontend-web/skins.py	Thu Sep  6 15:28:10 2007
@@ -54,6 +54,7 @@
     '/nuevo_usuario_POST':  [],
     '/perfil_POST':         [],
     '/toggle_readonly':     [],
+    '/toggle_sticky':       [],
     }
 
 import os

Modified: trunk/frontend-web/skins/default/body_show_thread.html
==============================================================================
--- trunk/frontend-web/skins/default/body_show_thread.html	(original)
+++ trunk/frontend-web/skins/default/body_show_thread.html	Thu Sep  6 15:28:10 2007
@@ -36,6 +36,7 @@
       <li><a href="/">P&aacute;gina principal</a></li>
       <li>%(auth)s</li>
       <li><a href="/toggle_readonly/%(thread_num)d">Marcar/desmarcar este hilo como 'solo lectura'</a></li>
+      <li><a href="/toggle_sticky/%(thread_num)d">Marcar/desmarcar este hilo como 'sticky'</a></li>
       <li><a href="/nuevo_usuario">Dar de alta un nuevo usuario</a></li>
       <li><a href="/edit_metatags">Editar Metatags</a></li>
       <li><a href="/edit_config">Editar configuraci&oacute;n de CPIF</a></li>

Modified: trunk/frontend-web/skins/default/body_show_thread_anonymous.html
==============================================================================
--- trunk/frontend-web/skins/default/body_show_thread_anonymous.html	(original)
+++ trunk/frontend-web/skins/default/body_show_thread_anonymous.html	Thu Sep  6 15:28:10 2007
@@ -19,6 +19,7 @@
       <li><a href="/">P&aacute;gina principal</a></li>
       <li>%(auth)s</li>
       <li><a href="/toggle_readonly/%(thread_num)d">Marcar/desmarcar este hilo como 'solo lectura'</a></li>
+      <li><a href="/toggle_sticky/%(thread_num)d">Marcar/desmarcar este hilo como 'sticky'</a></li>
       <li><a href="/nuevo_usuario">Dar de alta un nuevo usuario</a></li>
       <li><a href="/edit_metatags">Editar Metatags</a></li>
       <li><a href="/edit_config">Editar configuraci&oacute;n de CPIF</a></li>

Copied: trunk/frontend-web/url_toggle_sticky.py (from r330, /trunk/frontend-web/url_toggle_readonly.py)
==============================================================================
--- /trunk/frontend-web/url_toggle_readonly.py	(original)
+++ trunk/frontend-web/url_toggle_sticky.py	Thu Sep  6 15:28:10 2007
@@ -13,13 +13,13 @@
   if not usuario : return None
 
   import database
-  if not database.check_permissions_readonly(conn,usuario,num_thread) :
+  if not database.check_permissions_sticky(conn,usuario,num_thread) :
     import skins
     pagina = skins.Skin(path,usuario)
-    pagina.load_dict({"page_title": "cpif - Toogle ReadOnly"})
+    pagina.load_dict({"page_title": "cpif - Toogle sticky"})
     pagina.load_dict({"generic_message": "<h2>Necesitas ser 'master' o moderador para llevar a cabo esta acci&oacute;n</h2>"})
     return(pagina.web())
 
-  database.toogle_thread_readonly(conn,num_thread)
+  database.toogle_thread_sticky(conn,num_thread)
   return (302,{"Location":"/hilo/%d" %num_thread}, "")
 



More information about the cpif mailing list