Mercurial > hg > MPIWGWeb
comparison MPIWGProjects.py @ 169:2da62e93a1c6
fix editing related projects.
author | casties |
---|---|
date | Fri, 07 Jun 2013 12:47:11 +0200 |
parents | 47392bf3fcba |
children | 9d8f202e3895 |
comparison
equal
deleted
inserted
replaced
168:07beb979e7e4 | 169:2da62e93a1c6 |
---|---|
710 # sort by place | 710 # sort by place |
711 return sorted(items, key=lambda x:int(getattr(x, 'place', 0))) | 711 return sorted(items, key=lambda x:int(getattr(x, 'place', 0))) |
712 | 712 |
713 | 713 |
714 | 714 |
715 def scaleImage(self,REQUEST=None,RESPONSE=None): | |
716 """scale the last image""" | |
717 from PIL import Image; | |
718 from cStringIO import StringIO; | |
719 import ImageFilter | |
720 | |
721 | |
722 | |
723 | |
724 images = self.getImageList(); | |
725 if len(images)>0: | |
726 img = images[-1] #nimmt das letze | |
727 | |
728 logging.debug(img) | |
729 datStringIO = StringIO(); | |
730 """ | |
731 data=img.data | |
732 if isinstance(data, str): | |
733 datStringIO.write(data) | |
734 else: | |
735 | |
736 while data is not None: | |
737 datStringIO.write(data.data) | |
738 data=data.next | |
739 | |
740 """ | |
741 | |
742 logging.debug(img.absolute_url()) | |
743 | |
744 url = img.absolute_url() | |
745 if not url.startswith("http"): | |
746 url=REQUEST['URL0']+url | |
747 ul = urllib.urlopen(url) | |
748 datStringIO = StringIO(ul.read()); | |
749 | |
750 | |
751 try: | |
752 pilImg = Image.open(datStringIO) | |
753 | |
754 | |
755 except: | |
756 logging.error("scale image input:"+self.getId()) | |
757 return | |
758 | |
759 w,h = pilImg.size | |
760 logging.debug("oldsize: %s %s"%(w,h)) | |
761 targetW=120. | |
762 targetH=75. | |
763 | |
764 if targetW == w and targetH == h: | |
765 return | |
766 facW=targetW/w | |
767 | |
768 h1 = int(h*facW) | |
769 | |
770 if h1<targetH: #bild zu klein in h | |
771 facH=targetH/h | |
772 | |
773 w1=int(w*facH) | |
774 | |
775 fs = min(max(int(1/facH)+1,3),10) | |
776 logging.debug(fs) | |
777 if (1/facH) > 2: | |
778 pilImg = pilImg.filter(ImageFilter.BLUR) | |
779 | |
780 try: | |
781 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs)) | |
782 except: | |
783 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs-1)) | |
784 | |
785 logging.debug("Xnew size: %s %s"%(w1,targetH)) | |
786 res = pilImg.resize((w1,int(targetH)),Image.ANTIALIAS); | |
787 | |
788 | |
789 else: | |
790 fs = min(max(int(1/facW)+1,3),10) | |
791 logging.debug(fs) | |
792 | |
793 if (1/facW) > 2: | |
794 try: | |
795 pilImg = pilImg.filter(ImageFilter.BLUR) | |
796 except: | |
797 pass #some image types cannot be filter, just ignore | |
798 | |
799 try: | |
800 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs)) | |
801 except: | |
802 | |
803 | |
804 try: | |
805 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs-1)) | |
806 except: | |
807 pass | |
808 logging.debug("ynew size: %s %s"%(targetW,h1)) | |
809 res = pilImg.resize((int(targetW),h1)) | |
810 | |
811 nw,nh = res.size | |
812 | |
813 cutW1=int(nw/2-(targetW/2)) | |
814 cutW2=int(nw/2+(targetW/2)) | |
815 | |
816 cutH1=int(nh/2-(targetH/2)) | |
817 cutH2=int(nh/2+(targetH/2)) | |
818 | |
819 | |
820 | |
821 res2 = res.crop((cutW1,cutH1,cutW2,cutH2)) | |
822 | |
823 outS = StringIO() | |
824 | |
825 #res2.save("/tmp/"+self.getId()+".jpg") | |
826 | |
827 try: | |
828 res2.save(outS,"JPEG") | |
829 | |
830 self.addImage(outS, None, RESPONSE, filename="thumb.jpg") | |
831 | |
832 except: | |
833 logging.error("scale image:"+self.getId()) | |
834 | |
835 | |
836 | |
837 def addImage(self, fileHd, caption, RESPONSE=None, filename=None): | 715 def addImage(self, fileHd, caption, RESPONSE=None, filename=None): |
838 """add an MPIWG_Project_image""" | 716 """add an MPIWG_Project_image""" |
839 | 717 |
840 if not filename: | 718 if not filename: |
841 filename = fileHd.filename | 719 filename = fileHd.filename |
1807 | 1685 |
1808 if RESPONSE: | 1686 if RESPONSE: |
1809 self.redirect(RESPONSE, 'manageImages') | 1687 self.redirect(RESPONSE, 'manageImages') |
1810 | 1688 |
1811 | 1689 |
1690 def scaleImage(self,REQUEST=None,RESPONSE=None): | |
1691 """scale the last image""" | |
1692 from PIL import Image; | |
1693 from cStringIO import StringIO; | |
1694 import ImageFilter | |
1695 | |
1696 images = self.getImageList(); | |
1697 if len(images)>0: | |
1698 img = images[-1] #nimmt das letze | |
1699 | |
1700 logging.debug(img) | |
1701 datStringIO = StringIO(); | |
1702 """ | |
1703 data=img.data | |
1704 if isinstance(data, str): | |
1705 datStringIO.write(data) | |
1706 else: | |
1707 | |
1708 while data is not None: | |
1709 datStringIO.write(data.data) | |
1710 data=data.next | |
1711 | |
1712 """ | |
1713 | |
1714 logging.debug(img.absolute_url()) | |
1715 | |
1716 url = img.absolute_url() | |
1717 if not url.startswith("http"): | |
1718 url=REQUEST['URL0']+url | |
1719 ul = urllib.urlopen(url) | |
1720 datStringIO = StringIO(ul.read()); | |
1721 | |
1722 | |
1723 try: | |
1724 pilImg = Image.open(datStringIO) | |
1725 | |
1726 | |
1727 except: | |
1728 logging.error("scale image input:"+self.getId()) | |
1729 return | |
1730 | |
1731 w,h = pilImg.size | |
1732 logging.debug("oldsize: %s %s"%(w,h)) | |
1733 targetW=120. | |
1734 targetH=75. | |
1735 | |
1736 if targetW == w and targetH == h: | |
1737 return | |
1738 facW=targetW/w | |
1739 | |
1740 h1 = int(h*facW) | |
1741 | |
1742 if h1<targetH: #bild zu klein in h | |
1743 facH=targetH/h | |
1744 | |
1745 w1=int(w*facH) | |
1746 | |
1747 fs = min(max(int(1/facH)+1,3),10) | |
1748 logging.debug(fs) | |
1749 if (1/facH) > 2: | |
1750 pilImg = pilImg.filter(ImageFilter.BLUR) | |
1751 | |
1752 try: | |
1753 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs)) | |
1754 except: | |
1755 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs-1)) | |
1756 | |
1757 logging.debug("Xnew size: %s %s"%(w1,targetH)) | |
1758 res = pilImg.resize((w1,int(targetH)),Image.ANTIALIAS); | |
1759 | |
1760 | |
1761 else: | |
1762 fs = min(max(int(1/facW)+1,3),10) | |
1763 logging.debug(fs) | |
1764 | |
1765 if (1/facW) > 2: | |
1766 try: | |
1767 pilImg = pilImg.filter(ImageFilter.BLUR) | |
1768 except: | |
1769 pass #some image types cannot be filter, just ignore | |
1770 | |
1771 try: | |
1772 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs)) | |
1773 except: | |
1774 | |
1775 | |
1776 try: | |
1777 pilImg = pilImg.filter(ImageFilter.MaxFilter(fs-1)) | |
1778 except: | |
1779 pass | |
1780 logging.debug("ynew size: %s %s"%(targetW,h1)) | |
1781 res = pilImg.resize((int(targetW),h1)) | |
1782 | |
1783 nw,nh = res.size | |
1784 | |
1785 cutW1=int(nw/2-(targetW/2)) | |
1786 cutW2=int(nw/2+(targetW/2)) | |
1787 | |
1788 cutH1=int(nh/2-(targetH/2)) | |
1789 cutH2=int(nh/2+(targetH/2)) | |
1790 | |
1791 res2 = res.crop((cutW1,cutH1,cutW2,cutH2)) | |
1792 | |
1793 outS = StringIO() | |
1794 | |
1795 #res2.save("/tmp/"+self.getId()+".jpg") | |
1796 | |
1797 try: | |
1798 res2.save(outS,"JPEG") | |
1799 | |
1800 self.addImage(outS, None, RESPONSE, filename="thumb.jpg") | |
1801 | |
1802 except: | |
1803 logging.error("scale image:"+self.getId()) | |
1804 | |
1805 | |
1812 def updateProjectMembers(self, updateResponsibleScientistsList=False): | 1806 def updateProjectMembers(self, updateResponsibleScientistsList=False): |
1813 """Update project-member table.""" | 1807 """Update project-member table.""" |
1814 # projects are identified by id | 1808 # projects are identified by id |
1815 pid = self.getId() | 1809 pid = self.getId() |
1816 | 1810 |