comparison MPIWGProjects.py @ 51:d456fe185649

more work on projects. more cleanup.
author casties
date Tue, 30 Apr 2013 12:49:26 +0200
parents e30a4bd074db
children 1ed79b33200c
comparison
equal deleted inserted replaced
50:e30a4bd074db 51:d456fe185649
582 images[nr + 1][1].place -= 1 582 images[nr + 1][1].place -= 1
583 images[nr][1].place += 1 583 images[nr][1].place += 1
584 pass 584 pass
585 585
586 586
587 # invalidate thumbnail
588 self.projectThumb = None
587 pt = PageTemplateFile('zpt/project/edit_images', globals()).__of__(self) 589 pt = PageTemplateFile('zpt/project/edit_images', globals()).__of__(self)
588 return pt() 590 return pt()
589 591
590 def managePublications(self, pubName=None, op=None): 592 def managePublications(self, pubName=None, op=None):
591 """managage images""" 593 """managage images"""
830 obj.id = filename 832 obj.id = filename
831 833
832 # invalidate thumbnail 834 # invalidate thumbnail
833 self.projectThumb = None 835 self.projectThumb = None
834 836
835 if RESPONSE is not None: 837 if RESPONSE is not None:
836
837 self.redirect(RESPONSE, 'manageImages') 838 self.redirect(RESPONSE, 'manageImages')
838 839
839 840
840 def getEditableFields(self): 841 def getEditableFields(self):
841 """giveListofDatafields""" 842 """giveListofDatafields"""
1682 Returns HashTree instance.""" 1683 Returns HashTree instance."""
1683 tree = self._v_projectTree 1684 tree = self._v_projectTree
1684 if tree is None: 1685 if tree is None:
1685 tree = HashTree(keySeparator='.', keyFn=getInt) 1686 tree = HashTree(keySeparator='.', keyFn=getInt)
1686 for p in self.objectValues(spec='MPIWGProject'): 1687 for p in self.objectValues(spec='MPIWGProject'):
1688 # add all projects
1687 tree.add(p.getNumber(), p) 1689 tree.add(p.getNumber(), p)
1688 1690
1689 self._v_projectTree = tree 1691 self._v_projectTree = tree
1690 # logging.debug("getProjectTree: tree=%s"%(tree.root.getSubtreeAsText())) 1692 # logging.debug("getProjectTree: tree=%s"%(tree.root.getSubtreeAsText()))
1691 1693
1692 return tree 1694 return tree
1693 1695
1694 1696
1695 def getProjectsAsList(self, start, active=1, archived=1): 1697 def getProjectsAsList(self, start=None, active=1, archived=1):
1696 """Return flattened list of projects, starting from start. 1698 """Return flattened list of projects, starting from start.
1697 1699
1698 active = 0 : all projects 1700 active = 0 : all projects
1699 active = 1 : active projects 1701 active = 1 : active projects
1700 active = 2 : inactive projects 1702 active = 2 : inactive projects
1746 projects.append(p) 1748 projects.append(p)
1747 1749
1748 projects.sort(key=lambda p:[int(n) for n in p.getNumber().split('.')]) 1750 projects.sort(key=lambda p:[int(n) for n in p.getNumber().split('.')])
1749 return projects 1751 return projects
1750 1752
1753
1754 security.declareProtected('View management screens', 'changeProjectTree')
1755 def changeProjectTree(self, RESPONSE=None):
1756 """change the complete tree"""
1757 form=self.REQUEST.form
1758 hashList={}
1759 onlyArchived=int(form.get("onlyArchived",0))
1760 onlyActive=int(form.get("onlyActive",0))
1761 dep=form.get("dep",None)
1762
1763 fields = self.getProjectsAsList(start=dep, archived=onlyArchived, active=onlyActive)
1764
1765 logging.info("GOT TREE!----------------------------------------------------")
1766 for field in form.keys():
1767
1768 splitted=field.split('_')
1769 if (len(splitted)>1) and (splitted[1]=="runningNumber"):
1770 #feld hat die Form Nummer_name und runnignNumber
1771 nr=int(splitted[0]) # nummer des Datensatzes
1772 project = fields[nr]
1773
1774 #
1775 # change active
1776 #
1777 if form.has_key('%s_active'%nr): # active flag is set
1778 project.setActiveFlag(True)
1779 else:
1780 project.setActiveFlag(False)
1781
1782 #
1783 # nummer hat sich geaendert
1784 #
1785 entryChanged = False;
1786 pronum = project.getNumber()
1787 formnum = form['%s_number'%nr]
1788
1789 if not (pronum == formnum):
1790 logging.debug("Changed!Number+++++++++++++++++++++++++++++++++")
1791 logging.debug(repr(fields[nr].xdata_05)+" ---> "+ repr(form[str(nr)+'_number']))
1792 entryChanged = True
1793
1794 #
1795 # completed hat sich geaendert
1796 #
1797 td = project.transformDate # hole die funktion zum transformieren des datums
1798 formstarted = form[str(nr)+'_started']
1799 formcompleted = form[str(nr)+'_completed']
1800
1801 if not (td(project.getCompletedAt()) == td(formcompleted)):
1802 logging.info(repr(td(project.getCompletedAt()))+" ---> "+ repr(td(form[str(nr)+'_completed'])))
1803 logging.info("Changed!Completed+++++++++++++++++++++++++++++++++")
1804 entryChanged = True
1805
1806 if not (td(project.getStartedAt()) == td(formstarted)):
1807 logging.info(repr(td(project.getStartedAt()))+" ---> "+ repr(td(form[str(nr)+'_started'])))
1808 logging.info("Changed!Started+++++++++++++++++++++++++++++++++")
1809 entryChanged = True
1810
1811 if entryChanged:
1812 logging.info("Changed!+++++++++++++++++++++++++++++++++")
1813 project.copyObjectToArchive()
1814 project.xdata_05 = formnum
1815 project.setCompletedAt(formcompleted)
1816 project.setStartedAt(formstarted)
1817 # reset tree
1818 self._v_projectTree = None
1819
1820 if RESPONSE is not None:
1821 RESPONSE.redirect(self.en.MPIWGrootURL()+'/admin/showTree')
1822
1751 1823
1752 security.declareProtected('View management screens', 'updateAllProjectMembers') 1824 security.declareProtected('View management screens', 'updateAllProjectMembers')
1753 def updateAllProjectMembers(self, updateResponsibleScientistsList=False): 1825 def updateAllProjectMembers(self, updateResponsibleScientistsList=False):
1754 """Re-create responsibleScientistsLists and projects_members table from all current projects.""" 1826 """Re-create responsibleScientistsLists and projects_members table from all current projects."""
1755 # empty table 1827 # empty table