Advertisement
Guest User

Untitled

a guest
Jul 6th, 2017
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 17.45 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from Products.CMFCore.utils import getToolByName
  3. from zope.app.component.hooks import getSite
  4. from Products.ATContentTypes.lib import constraintypes
  5. from betahaus.memberprofile.utilities import profileutils
  6.  
  7. from betahaus.memberprofile.utilities import profileutils
  8. from zope.event import notify
  9. from Products.Archetypes.interfaces import IObjectInitializedEvent
  10.  
  11. # -------------------------------------------------
  12.  
  13. CIDSYSTEM_OBJ = "cid-system"
  14. CIDSYSTEM_TYP = "cidsystem"
  15.  
  16. def checkSystem ( portal ):
  17.     if portal.get ( CIDSYSTEM_OBJ, None ):
  18.         return "<span class='cid-greenfont'>Existe</span>"
  19.  
  20.     return "<span class='cid-redfont'>No Existe</span>"
  21.  
  22. def createSystem ( portal ):
  23.     deleteSystem ( portal )
  24.     checkGlobalAllow(portal,CIDSYSTEM_TYP)
  25.     zodbObj = portal.invokeFactory(CIDSYSTEM_TYP, id=CIDSYSTEM_OBJ, title=u"Sistema de Seguimiento y Planeación")
  26.     uncheckGlobalAllow(portal,CIDSYSTEM_TYP)
  27.  
  28. def deleteSystem ( portal ):
  29.     try:
  30.         portal.manage_delObjects ( CIDSYSTEM_OBJ )
  31.     except:
  32.         pass
  33.  
  34. # -------------------------------------------------
  35.  
  36. def checkUsers ( portal ):
  37.  
  38.     pm = portal.portal_membership.listMemberIds()
  39.     matched = 0
  40.  
  41.     for i in range(10):
  42.         userName = "usuario" + str(i + 1)
  43.         if userName in pm:
  44.             matched = matched + 1
  45.  
  46.     if matched == 10:
  47.         return "<span class='cid-greenfont'>Existe</span>"
  48.  
  49.     return "<span class='cid-redfont'>No Existe</span>"
  50.  
  51. def createUsers ( portal ):
  52.     deleteUsers ( portal )
  53.  
  54.     pm = portal.portal_membership
  55.     pr = portal.portal_registration
  56.  
  57.     for i in range(10):
  58.         userName = "usuario" + str(i + 1)
  59.         email    = userName + "@cid.org.co"
  60.         fullname = "Usuario Nro " + str(i+1)
  61.         firstname= "Usuario"
  62.         firstlastname = "CID"
  63.         secondlastname = "Nro " + str(i+1)
  64.         password = "12345"
  65.         memberData = {'username': userName,'fullname': fullname,
  66.                       'firstname' : firstname, 'firstlastname' : firstlastname, 'secondlastname' : secondlastname,
  67.                       'password': password, 'email': email}
  68.  
  69.         pr.addMember(userName, password, ('Member',), domains='',properties=memberData)
  70.         profileutils.create_without_login(portal, userName)
  71.  
  72. def deleteUsers ( portal ):
  73.     pm = portal.portal_membership
  74.  
  75.     for i in range(10):
  76.         userName = "usuario" + str(i + 1)
  77.         try:
  78.             pm.deleteMembers([userName],1)
  79.         except:
  80.             continue
  81.  
  82. # -------------------------------------------------
  83.  
  84. CIDDIRECCIONGENERAL_OBJ                   = "cid-direcciongeneral"
  85. CIDDIRECCIONGENERAL_TYP                   = "ciddirecciongeneral"
  86. CIDDIRECCIONPROGRAMATICA_OBJ              = "cid-direccionprogramatica"
  87. CIDDIRECCIONPROGRAMATICA_TYP              = "ciddireccionprogramatica"
  88. CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ = "cid-direccionadministrativayfinanciera"
  89. CIDDIRECCIONADMINISTRATIVAYFINANCIERA_TYP = "ciddireccionadministrativayfinanciera"
  90.  
  91. def checkDirections ( portal ):
  92.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  93.     if cidsystem:
  94.         ciddirecciongeneral                   = cidsystem.get ( CIDDIRECCIONGENERAL_OBJ, None )
  95.         ciddireccionprogramatica              = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  96.         ciddireccionadministrativayfinanciera = cidsystem.get ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, None )
  97.  
  98.         if ciddirecciongeneral and ciddireccionprogramatica and ciddireccionadministrativayfinanciera:
  99.             return "<span class='cid-greenfont'>Existe</span>"
  100.  
  101.     return "<span class='cid-redfont'>No Existe</span>"
  102.  
  103. def createDirections ( portal ):
  104.     deleteDirections ( portal )
  105.  
  106.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  107.     if cidsystem:
  108.         zodbObj = cidsystem.invokeFactory(CIDDIRECCIONGENERAL_TYP, id=CIDDIRECCIONGENERAL_OBJ, title=u"Dirección General")
  109.         zodbObj = cidsystem.invokeFactory(CIDDIRECCIONPROGRAMATICA_TYP, id=CIDDIRECCIONPROGRAMATICA_OBJ, title=u"Dirección Programática")
  110.         zodbObj = cidsystem.invokeFactory(CIDDIRECCIONADMINISTRATIVAYFINANCIERA_TYP, id=CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, title=u"Dirección Administrativa y Financiera")
  111.  
  112.  
  113. def deleteDirections ( portal ):
  114.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  115.     if cidsystem is not None:
  116.         try:
  117.             cidsystem.manage_delObjects ( CIDDIRECCIONGENERAL_OBJ )
  118.             cidsystem.manage_delObjects ( CIDDIRECCIONPROGRAMATICA_OBJ )
  119.             cidsystem.manage_delObjects ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ )
  120.         except:
  121.             pass
  122.  
  123. # -------------------------------------------------
  124.  
  125. CIDREGIONAL_TYP = "cidregional"
  126.  
  127. def checkRegionals ( portal, regionals ):
  128.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  129.     if cidsystem:
  130.         ciddireccionprogramatica = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  131.  
  132.         if ciddireccionprogramatica:
  133.  
  134.             esta = 1
  135.  
  136.             for regional in regionals.values():
  137.                 if ciddireccionprogramatica.get(regional, None) is None:
  138.                     esta = 0
  139.                     break
  140.  
  141.             if esta == 1:
  142.                 return "<span class='cid-greenfont'>Existe</span>"
  143.  
  144.     return "<span class='cid-redfont'>No Existe</span>"
  145.  
  146. def createRegionals ( portal, regionals ):
  147.     deleteRegionals ( portal )
  148.  
  149.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  150.     if cidsystem:
  151.         ciddireccionprogramatica = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  152.  
  153.         if ciddireccionprogramatica:
  154.             for k, v in regionals.items():
  155.                 #print "KEY = ", k, " VALUE = ", v
  156.                 if ciddireccionprogramatica.get(v,None) is None:
  157.                     result = ciddireccionprogramatica.invokeFactory(CIDREGIONAL_TYP, id=v, title=k)
  158.                     obj = getattr (ciddireccionprogramatica, v )
  159.  
  160.                     obj.objetivo_general = "Objetivo General"
  161.                     obj.objetivo_especifico = "Objetivo Específico"
  162.                     obj.reindexObject()
  163.  
  164. def deleteRegionals ( portal ):
  165.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  166.     if cidsystem:
  167.         ciddireccionprogramatica = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  168.  
  169.         if ciddireccionprogramatica:
  170.             for objId in ciddireccionprogramatica.objectIds():
  171.                 try:
  172.                     ciddireccionprogramatica.manage_delObjects ( objId )
  173.                 except:
  174.                     pass
  175.  
  176. # -------------------------------------------------
  177.  
  178. CIDPROJECT_TYP = "cidproject"
  179.  
  180. def checkProjects ( portal, regionals ):
  181.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  182.     if cidsystem:
  183.         ciddirecciongeneral                   = cidsystem.get ( CIDDIRECCIONGENERAL_OBJ, None )
  184.         ciddireccionprogramatica              = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  185.         ciddireccionadministrativayfinanciera = cidsystem.get ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, None )
  186.  
  187.         if ciddireccionprogramatica and ciddirecciongeneral and ciddireccionadministrativayfinanciera:
  188.             esta = 1
  189.  
  190.             # Regional Projects
  191.             for k,v in regionals.items():
  192.                 if ciddireccionprogramatica.get(v, None) is None:
  193.                     esta = 0
  194.                     break
  195.  
  196.             # General
  197.             if esta == 1 and len(ciddirecciongeneral.objectIds()) <= 0:
  198.                 esta = 0
  199.  
  200.             # Administrativa y Financiera
  201.             if esta == 1 and len(ciddireccionadministrativayfinanciera.objectIds()) <= 0:
  202.                 esta = 0
  203.  
  204.             if esta == 1:
  205.                 return "<span class='cid-greenfont'>Existe</span>"
  206.  
  207.     return "<span class='cid-redfont'>No Existe</span>"
  208.  
  209.  
  210.  
  211. def createProjects ( portal, regionals ):
  212.     deleteProjects ( portal, regionals )
  213.  
  214.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  215.     if cidsystem:
  216.         ciddirecciongeneral                   = cidsystem.get ( CIDDIRECCIONGENERAL_OBJ, None )
  217.         ciddireccionprogramatica              = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  218.         ciddireccionadministrativayfinanciera = cidsystem.get ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, None )
  219.  
  220.         if ciddireccionprogramatica and ciddirecciongeneral and ciddireccionadministrativayfinanciera:
  221.  
  222.             esta = 1
  223.  
  224.             # Regional Projects
  225.             for k,v in regionals.items():
  226.                 cidregional = ciddireccionprogramatica.get(v, None)
  227.                 if cidregional is None:
  228.                     esta = 0
  229.                     break
  230.                 else:
  231.                     id = "proyecto-regional-" + v
  232.                     title = "Proyecto Regional " + k
  233.                     cidregional.invokeFactory ( CIDPROJECT_TYP, id=id, title=title )
  234.                     obj = cidregional.get(id, None )
  235.                     obj.cid_proyecto_objetivo_general = "Objetivo General"
  236.                     obj.cid_proyecto_cooperante = "El Cooperante"
  237.                     obj.cid_proyecto_fecha_inicio = "2010-06-11 00:00:00"
  238.                     obj.cid_proyecto_fecha_fin = "2010-06-12 00:00:00"
  239.                     obj.setCid_proyecto_usuario_coordinador([portal.Members['usuario1'].UID(),portal.Members['usuario2'].UID()])
  240.                     obj.setCid_proyecto_usuario_operativo([portal.Members['usuario3'].UID(),portal.Members['usuario4'].UID()])
  241.                     obj.reindexObject()
  242.  
  243.                     obj.__ac_local_roles_block__ = True
  244.                     for user in obj.getReferences("proyecto_usuario_operativo"):
  245.                         obj.manage_setLocalRoles(user.getId(),[ 'Reader' ])
  246.                     for user in obj.getReferences("proyecto_usuario_coordinador"):
  247.                         obj.manage_setLocalRoles(user.getId(),[ 'Contributor' ])
  248.                     obj.reindexObjectSecurity()
  249.  
  250.  
  251.             # General
  252.             ciddirecciongeneral.invokeFactory ( CIDPROJECT_TYP, id="proyecto-direccion-general", title=u"Proyecto Dirección General" )
  253.             obj = ciddirecciongeneral.get("proyecto-direccion-general", None )
  254.             obj.cid_proyecto_objetivo_general = "Objetivo General"
  255.             obj.cid_proyecto_cooperante = "El Cooperante"
  256.             obj.cid_proyecto_fecha_inicio = "2010-06-11 00:00:00"
  257.             obj.cid_proyecto_fecha_fin = "2010-06-12 00:00:00"
  258.             obj.setCid_proyecto_usuario_coordinador([portal.Members['usuario1'].UID(),portal.Members['usuario2'].UID()])
  259.             obj.setCid_proyecto_usuario_operativo([portal.Members['usuario3'].UID(),portal.Members['usuario4'].UID()])
  260.             obj.reindexObject()
  261.             obj.__ac_local_roles_block__ = True
  262.             for user in obj.getReferences("proyecto_usuario_operativo"):
  263.                 obj.manage_setLocalRoles(user.getId(),[ 'Reader' ])
  264.             for user in obj.getReferences("proyecto_usuario_coordinador"):
  265.                 obj.manage_setLocalRoles(user.getId(),[ 'Contributor' ])
  266.             obj.reindexObjectSecurity()
  267.  
  268.             # Administrativa y Financiera
  269.             ciddireccionadministrativayfinanciera.invokeFactory ( CIDPROJECT_TYP, id="proyecto-direccion-administrativa-y-financiera", title=u"Proyecto Dirección Administrativa y Financiera" )
  270.             obj = ciddireccionadministrativayfinanciera.get("proyecto-direccion-administrativa-y-financiera", None )
  271.             obj.cid_proyecto_objetivo_general = "Objetivo General"
  272.             obj.cid_proyecto_cooperante = "El Cooperante"
  273.             obj.cid_proyecto_fecha_inicio = "2010-06-11 00:00:00"
  274.             obj.cid_proyecto_fecha_fin = "2010-06-12 00:00:00"
  275.             obj.setCid_proyecto_usuario_coordinador([portal.Members['usuario1'].UID(),portal.Members['usuario2'].UID()])
  276.             obj.setCid_proyecto_usuario_operativo([portal.Members['usuario3'].UID(),portal.Members['usuario4'].UID()])
  277.             obj.reindexObject()
  278.             obj.__ac_local_roles_block__ = True
  279.             for user in obj.getReferences("proyecto_usuario_operativo"):
  280.                 obj.manage_setLocalRoles(user.getId(),[ 'Reader' ])
  281.             for user in obj.getReferences("proyecto_usuario_coordinador"):
  282.                 obj.manage_setLocalRoles(user.getId(),[ 'Contributor' ])
  283.             obj.reindexObjectSecurity()
  284.  
  285. def deleteProjects ( portal, regionals ):
  286.     createDirections ( portal )
  287.     createRegionals ( portal, regionals )
  288.  
  289. # -------------------------------------------------
  290.  
  291. CIDOBJETIVE_TYP = "cidobjetivoespecifico"
  292. CIDOBJETIVE_OBJ = "cid-objetivoespecifico"
  293.  
  294. def checkObjetives ( portal, regionals ):
  295.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  296.     if cidsystem:
  297.         ciddirecciongeneral                   = cidsystem.get ( CIDDIRECCIONGENERAL_OBJ, None )
  298.         ciddireccionprogramatica              = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  299.         ciddireccionadministrativayfinanciera = cidsystem.get ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, None )
  300.  
  301.         if ciddireccionprogramatica and ciddirecciongeneral and ciddireccionadministrativayfinanciera:
  302.             esta = 1
  303.  
  304.             # Regional Projects
  305.             for k,v in regionals.items():
  306.                 p = ciddireccionprogramatica.get(v, None)
  307.                 if p is None:
  308.                     esta = 0
  309.                     break
  310.                 else:
  311.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  312.                         esta = 0
  313.                         break
  314.  
  315.             # General
  316.             if esta == 1 and len(ciddirecciongeneral.objectIds()) <= 0:
  317.                 esta = 0
  318.             elif esta == 1 and len(ciddirecciongeneral.objectIds()) > 0:
  319.                 for p in ciddirecciongeneral.objectValues():
  320.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  321.                         esta = 0
  322.                         break
  323.  
  324.             # Administrativa y Financiera
  325.             if esta == 1 and len(ciddireccionadministrativayfinanciera.objectIds()) <= 0:
  326.                 esta = 0
  327.             elif esta == 1 and len(ciddireccionadministrativayfinanciera.objectIds()) > 0:
  328.                 for p in ciddireccionadministrativayfinanciera.objectValues():
  329.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  330.                         esta = 0
  331.                         break
  332.  
  333.             if esta == 1:
  334.                 return "<span class='cid-greenfont'>Existe</span>"
  335.  
  336.     return "<span class='cid-redfont'>No Existe</span>"
  337.  
  338. def createObjetives ( portal, regionals ):
  339.     deleteObjetives ( portal, regionals )
  340.  
  341.     cidsystem = portal.get ( CIDSYSTEM_OBJ, None )
  342.     if cidsystem:
  343.         ciddirecciongeneral                   = cidsystem.get ( CIDDIRECCIONGENERAL_OBJ, None )
  344.         ciddireccionprogramatica              = cidsystem.get ( CIDDIRECCIONPROGRAMATICA_OBJ, None )
  345.         ciddireccionadministrativayfinanciera = cidsystem.get ( CIDDIRECCIONADMINISTRATIVAYFINANCIERA_OBJ, None )
  346.  
  347.         if ciddireccionprogramatica and ciddirecciongeneral and ciddireccionadministrativayfinanciera:
  348.             esta = 1
  349.  
  350.             # Regional Projects
  351.             for k,v in regionals.items():
  352.                 p = ciddireccionprogramatica.get(v, None)
  353.                 if p is None:
  354.                     esta = 0
  355.                     break
  356.                 else:
  357.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  358.                         newId = p.invokeFactory ( CIDOBJETIVE_TYP, id = CIDOBJETIVE_OBJ, title = "Objetivo Especifico para: " + p.title )
  359.                         obj = p.get ( CIDOBJETIVE_OBJ, None )
  360.                         obj.objetivo_especifico = "El objetivo específico es poner a prueba el sistema"
  361.                         obj.reindexObject()
  362.  
  363.             # General
  364.             if esta == 1 and len(ciddirecciongeneral.objectIds()) <= 0:
  365.                 esta = 0
  366.             elif esta == 1 and len(ciddirecciongeneral.objectIds()) > 0:
  367.                 for p in ciddirecciongeneral.objectValues():
  368.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  369.                         newId = p.invokeFactory ( CIDOBJETIVE_TYP, id = CIDOBJETIVE_OBJ, title = "Objetivo Especifico para: " + p.title )
  370.                         obj = p.get ( CIDOBJETIVE_OBJ, None )
  371.                         obj.objetivo_especifico = "El objetivo específico es poner a prueba el sistema"
  372.                         obj.reindexObject()
  373.  
  374.             # Administrativa y Financiera
  375.             if esta == 1 and len(ciddireccionadministrativayfinanciera.objectIds()) <= 0:
  376.                 esta = 0
  377.             elif esta == 1 and len(ciddireccionadministrativayfinanciera.objectIds()) > 0:
  378.                 for p in ciddireccionadministrativayfinanciera.objectValues():
  379.                     if p.get ( CIDOBJETIVE_OBJ, None ) is None:
  380.                         newId = p.invokeFactory ( CIDOBJETIVE_TYP, id = CIDOBJETIVE_OBJ, title = "Objetivo Especifico para: " + p.title )
  381.                         obj = p.get ( CIDOBJETIVE_OBJ, None )
  382.                         obj.objetivo_especifico = "El objetivo específico es poner a prueba el sistema"
  383.                         obj.reindexObject()
  384.  
  385. def deleteObjetives ( portal, regionals ):
  386.     createProjects ( portal, regionals )
  387.  
  388. # -------------------------------------------------
  389.  
  390. def checkGlobalAllow(portal,portal_type):
  391.     try:
  392.         portal.portal_types[portal_type].global_allow = True
  393.     except:
  394.         pass
  395.  
  396. def uncheckGlobalAllow(portal,portal_type):
  397.     try:
  398.         portal.portal_types[portal_type].global_allow = False
  399.     except:
  400.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement