# HG changeset patch # User casties # Date 1367512321 -7200 # Node ID 04fb655633ef4c5c43cf55372af5ab7766e7a2fd # Parent dc41deabc8f8bd5bcb194e3970fccd3cfdbbe921 more cleaning up projects. diff -r dc41deabc8f8 -r 04fb655633ef MPIWGProjects.py --- a/MPIWGProjects.py Thu May 02 11:26:57 2013 +0200 +++ b/MPIWGProjects.py Thu May 02 18:32:01 2013 +0200 @@ -92,9 +92,16 @@ """publications object fuer project""" meta_type = "MPIWGProject_publication" + + text = None + link = None + bookId = None + + editForm = PageTemplateFile('zpt/project/related_publication/edit_basic', globals()) + + def redirect(self, RESPONSE, url): - """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" - + """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" timeStamp = time.time() if url.find("?") > -1: # giebt es schon parameter @@ -106,93 +113,53 @@ logging.debug(email.Utils.formatdate() + ' GMT') RESPONSE.redirect(url + addStr % timeStamp) - def hasLinkToBookPage(self, mode="not_cached"): + + def hasLinkToBookPage(self): """teste ob eingebener link zu einer MPIWG Book page geht""" - - logging.debug("MPIWGProject_publication - begin hasLinkToBookPage") - if (getattr(self, 'link', '') == ''): + if not self.link: return False # es gibt keinen link - logging.debug("MPIWGProject_publication - begin hasLinkToBookPage:" + self.link) - server = xmlrpclib.ServerProxy(self.link) - - if(mode == "cached"): - if (hasattr(self, "_v_hasLinkToBookPage")): - logging.debug("haslink cached") - return self._v_hasLinkToBookPage - - try: - server.getImageUrls() - logging.debug("MPIWGProject_publication - end TRUE") - self._v_hasLinkToBookPage = True - return True - except: - logging.debug("MPIWGProject_publication - end FALSE ") - self._v_hasLinkToBookPage = True - return False + paths = self.link.split('/') + if len(paths) > 2: + # book page should be in folder books + bookid = None + try: + idx = paths.index('books') + bookid = paths[idx + 1] + book = self.en.books[bookid] + self.bookId = bookid + return True + + except: + logging.debug("hasLinkToBookPage: not a book page link=%s"%self.link) + + self.bookId = None + return False + + def getBookId(self): + """Return the book page id.""" + return self.bookId - def getImageUrls(self, mode="not_cached"): - """get the image urls""" - if (getattr(self, 'link', '') == ''): - return [] # es gibt keinen link - - server = xmlrpclib.ServerProxy(self.link) - - - if(mode == "cached"): - if (hasattr(self, "_v_imageUrls")): - logging.debug("getImageURL cached") - return self._v_imageUrls - - try: - urls = server.getImageUrls() - ret = [] - for url in urls: - url = os.path.join(self.link, url) - ret.append(url) - - except: - self._v_imageUrls = [] - return [] - self._v_imageUrls = ret[0:] - return ret - - - def editPublication(self, text=None, image1=None, image2=None, description=None, link=None, RESPONSE=None): + def editPublication(self, text=None, description=None, link=None, RESPONSE=None): """edit a publication""" if (not text) and (not description): - pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'edit_publicationForm.zpt')).__of__(self) + pt = self.editForm return pt() - if text: - self.text = text[0:] + self.text = text if description: self.description = description if link: - self.link = link[0:] + self.link = link + self.hasLinkToBookPage() - if image1: - if hasattr(self, 'publicationImage1'): - self.publicationImage1.manage_upload(image1) - else: - nO = Image('publicationImage1', '', image1) - self._setObject('publicationImage1', nO) - - if image2: - if hasattr(self, 'publicationImage2'): - self.publicationImage2.manage_upload(image2) - else: - nO = Image('publicationImage2', '', image2) - self._setObject('publicationImage2', nO) - - self.ZCacheable_invalidate() if RESPONSE: self.redirect(RESPONSE, "../managePublications") @@ -202,6 +169,12 @@ meta_type = "MPIWGProject_relatedProject" + objid = None + projectLabel = None + + editForm = PageTemplateFile('zpt/project/related_project/edit_basic', globals()) + + def redirect(self, RESPONSE, url): """mache ein redirect mit einem angehaengten time stamp um ein reload zu erzwingen""" @@ -217,16 +190,39 @@ RESPONSE.redirect(url + addStr % timeStamp) + def getProjectId(self): + """Return the related project id.""" + return self.objid + + + def getProject(self): + """Return the related project object.""" + return getattr(self.projects, self.objid, None) + + def getProjectTitle(self): """Return the title of the related project.""" return getattr(self, 'projectWEB_title', None) + + def getProjectLabel(self): + """Return the label of the related project.""" + label = getattr(self, 'projectLabel', None) + if not label: + proj = self.getProject() + if proj is not None: + label = proj.getLabel() + + self.projectLabel = label + + return label + def editRelatedProject(self, link=None, RESPONSE=None): """edit a publication""" if (not link): - pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'edit_relatedProjectForm.zpt')).__of__(self) + pt = self.editForm return pt() # hole die id des projektes @@ -239,13 +235,14 @@ objid = splitted[-1] object = getattr(self.projects, objid, None) - if object == None: + if object is None: self.redirect(RESPONSE, 'errorRelatedProjects?link=' + link) self.orginallink = link[0:] self.objid = objid[0:] self.projectWEB_title = object.getProjectTitle() + self.projectLabel = object.getLabel() self.enabled = True; @@ -310,15 +307,20 @@ edit_css = ImageFile('css/edit.css', globals()) # make css refreshable for development edit_css.index_html = refreshingImageFileIndexHtml + # user-accessible editing templates edit_basic = PageTemplateFile('zpt/project/edit_basic', globals()) editForm = PageTemplateFile('zpt/project/edit_description', globals()) edit_template = PageTemplateFile('zpt/project/edit_template', globals()) editRelatedProjectsForm = PageTemplateFile('zpt/project/edit_related_projects', globals()) + editRelatedProjectsError = PageTemplateFile('zpt/project/edit_related_projects_error', globals()) editImagesForm = PageTemplateFile('zpt/project/edit_images', globals()) editPublicationsForm = PageTemplateFile('zpt/project/edit_publications', globals()) + editAdditionalPublicationsForm = PageTemplateFile('zpt/project/pubman/change_publications', globals()) # management templates loadNewFileForm = PageTemplateFile('zpt/project/manage_newfile', globals()) description_only_html = PageTemplateFile('zpt/project/description_only_html', globals()) + # additional pages + additionalPublications = PageTemplateFile('zpt/project/pubman/show_publications', globals()) # TODO: this should go away extendedBibliography = PageTemplateFile('zpt/project/extendedBibliography_template', globals()) @@ -474,6 +476,11 @@ else: return t + + def getMPIWGProjectUrl(self): + """Return this project for acquisition.""" + return self.absolute_url() + def getUrl(self, baseUrl=None): """returns URL to this Project""" @@ -548,7 +555,7 @@ return [p for p in tree.getChildrenOf(self.getNumber()) if p.checkActive(active)] - def getRelatedProjects(self): + def getRelatedProjectList(self): """returns the list of related projects""" items = self.objectValues(spec='MPIWGProject_relatedProject') # sort by place @@ -556,7 +563,7 @@ return items - def getRelatedPublications(self): + def getPublicationList(self): """returns the list of related publications""" items = self.objectValues(spec='MPIWGProject_publication') # sort by place @@ -592,7 +599,7 @@ for idx in range(len(objectList)): object = objectList[idx] - if object.getId() == objectId(): + if object.getId() == objectId: if direction == 'up': if idx > 0: # move up @@ -607,9 +614,9 @@ return - def manageImages(self, imageName=None, op=None): + def manageImages(self, name=None, op=None): """manage images""" - self.moveObjectPlace(self.getImageList(), imageName, op) + self.moveObjectPlace(self.getImageList(), name, op) # invalidate thumbnail self.projectThumb = None @@ -620,7 +627,7 @@ def managePublications(self, name=None, op=None): """manage publications""" - self.moveObjectPlace(self.getRelatedPublications(), name, op) + self.moveObjectPlace(self.getPublicationList(), name, op) pt = self.editPublicationsForm return pt() @@ -628,7 +635,7 @@ def manageRelatedProjects(self, name=None, op=None): """manage related projects""" - self.moveObjectPlace(self.getRelatedProjects(), name, op) + self.moveObjectPlace(self.getRelatedProjectList(), name, op) pt = self.editRelatedProjectsForm return pt() @@ -656,17 +663,17 @@ def errorRelatedProjects(self, link): """error creating a related project""" - pt = PageTemplateFile(os.path.join(package_home(globals()), 'zpt', 'edit_project_error_relatedProject.zpt')).__of__(self) + pt = self.editRelatedProjectsError return pt(link=link) def addRelatedProject(self, link, RESPONSE=None): """add a MPIWGProject_relatedProject""" - number = self.getLastPublicationNumber() + 1 - name = "RelatedProject" + str(number) + number = self.getLastRelatedProjectNumber() + 1 + name = "related_project_" + str(number) while hasattr(self, name): number += 1 - name = "RelatedProject_" + str(number) + name = "related_project_" + str(number) # hole die id des projektes splitted = link.split("/") @@ -694,25 +701,32 @@ obj.enabled = True; obj.place = self.getLastRelatedProjectNumber() + 1 obj.id = name - self.ZCacheable_invalidate() if RESPONSE is not None: self.redirect(RESPONSE, 'manageRelatedProjects') - def getLastPublicationNumber(self): - publications = self.getRelatedPublications() - if not publications: + def getLastImageNumber(self): + items = self.getImageList() + if not items: return 0 else: - return getattr(publications[-1], 'place', 0) + return getattr(items[-1], 'place', 0) + + + def getLastPublicationNumber(self): + items = self.getPublicationList() + if not items: + return 0 + else: + return getattr(items[-1], 'place', 0) def getLastRelatedProjectNumber(self): - publications = self.getRelatedProjects() - if not publications: + items = self.getRelatedProjectList() + if not items: return 0 else: - return getattr(publications[-1], 'place', 0) + return getattr(items[-1], 'place', 0) def deletePublication(self, id, RESPONSE=None): @@ -732,9 +746,9 @@ def deleteImage(self, id, RESPONSE=None): """delete Image id""" try: - self.manage_delObjects([id]) + self.manage_delObjects([id]) except: - logging.error("ERROR MPIWG: %s %s" % sys.exc_info()[0:2]) + logging.error("ERROR MPIWG: %s %s" % sys.exc_info()[0:2]) # invalidate thumbnail self.projectThumb = None @@ -756,7 +770,7 @@ self._setObject(filename, newImage) obj = getattr(self, filename) - obj.caption = caption[0:] + obj.caption = caption[:] obj.enabled = True; obj.place = self.getLastImageNumber() + 1 obj.id = filename @@ -1289,7 +1303,7 @@ def hasRelatedPublicationsOldVersion(self): """teste ob es related publications gibt""" ret = True; - if (self.getRelatedPublications() == ''): + if (getattr(self, 'WEB_related_pub', '') == ''): ret = False; # nichts im alten feld logging.debug("webrel:" + repr(ret)) if (getattr(self, 'WEB_related_pub_copied', False)): @@ -1493,8 +1507,7 @@ def changePublications(self,REQUEST): """change published publications""" - data=REQUEST.form - + data=REQUEST.form if data.get("method","change"): for key in data.keys(): @@ -1506,8 +1519,7 @@ elif(splitted[1]) == "p": self.setPublicationPriority(splitted[0],value); - - pt = PageTemplateFile(os.path.join(package_home(globals()),'zpt/project/pubman','change_publications.zpt')).__of__(self) + pt = self.editAdditionalPublicationsForm return pt() def deleteFromPublicationList(self,escidocid): @@ -1533,27 +1545,22 @@ logging.error(value) - def getSelectedPublications(self): + def getAdditionalPublicationList(self): """hole publications aus der datenbank""" query="select * from pubmanbiblio_projects where lower(key_main) = lower(%s) order by priority DESC" return self.executeZSQL(query,[self.getId()]) - def hasExtendedPublicationList(self): + def hasAdditionalPublications(self): """test if extended publication list exists""" query="select count(*) from pubmanbiblio_projects where lower(key_main) = lower(%s)" - res= self.executeZSQL(query,[self.getId()]) - - if res[0].count>0: + res= self.executeZSQL(query,[self.getId()]) + if res[0].count > 0: return True else: return False - def publicationsFull(self,REQUEST): - """show publication""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/project/pubman','show_publications.zpt')).__of__(self) - return pt() def manage_addMPIWGProjectForm(self): @@ -1872,17 +1879,13 @@ log += "%s: has definedFields!\n"%project.getId() logging.debug("updateAllProjects(%s): has definedFields!"%project.getId()) delattr(project, 'definedFields') - + # - # update extended bibliography + # update related publications # - if hasattr(project, 'publicationList'): - log += "%s: has publicationList!\n"%project.getId() - logging.debug("updateAllProjects(%s): has publicationList!"%project.getId()) - extpub = project.publicationList - if hasattr(extpub, 'connection_id'): - logging.debug("updateAllProjects(%s): extended publication %s has connection_id=%s!"%(project.getId(),extpub.getId(),extpub.connection_id)) - + for pub in project.getPublicationList(): + pub.hasLinkToBookPage() + # # unicodify # diff -r dc41deabc8f8 -r 04fb655633ef MPIWGProjects_removed.py --- a/MPIWGProjects_removed.py Thu May 02 11:26:57 2013 +0200 +++ b/MPIWGProjects_removed.py Thu May 02 18:32:01 2013 +0200 @@ -343,4 +343,31 @@ + def getImageUrls(self, mode="not_cached"): + """get the image urls""" + + if (getattr(self, 'link', '') == ''): + return [] # es gibt keinen link + + server = xmlrpclib.ServerProxy(self.link) + + + if(mode == "cached"): + if (hasattr(self, "_v_imageUrls")): + logging.debug("getImageURL cached") + return self._v_imageUrls + + try: + urls = server.getImageUrls() + ret = [] + for url in urls: + url = os.path.join(self.link, url) + ret.append(url) + + except: + self._v_imageUrls = [] + return [] + self._v_imageUrls = ret[0:] + return ret + diff -r dc41deabc8f8 -r 04fb655633ef zpt/edit_project_error_relatedProject.zpt --- a/zpt/edit_project_error_relatedProject.zpt Thu May 02 11:26:57 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - -
-Project id: | -- |
WEB title: | -- |
Project Title | -+ | |||||
- up - down + up + down |
- - | + |
+ + + |
- | Edit Delete |
+ Edit Delete |
- The last image in the list is used as the project thumbnail image (140x87px). Preview:
+
+ The last image in the list is used as the project thumbnail image (140x87px):
@@ -52,7 +56,7 @@
- (if the marginal image from your current project description is not in this list, click here.) + (if the marginal image from your current project description is not in this list, click here.)
- up - down + up + down |
- Edit - Delete + Edit + Delete |