diff --git a/product/ERP5/interfaces/convertable.py b/product/ERP5/interfaces/convertable.py new file mode 100644 index 0000000000000000000000000000000000000000..ebf9d1b100cfa5a174693dc279e6b277d6875cba --- /dev/null +++ b/product/ERP5/interfaces/convertable.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved. +# Jean-Paul Smets-Solanes <jp@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from zope.interface import Interface + +class IConvertable(Interface): + """ + Convertable interface specification + + Documents which immplement IConvertable can be converted + to multiple formats. IConvertable also provides + methods to list possible formats which documents can + be converted to. + """ + + def convert(format, **kw): + """ + Converts the current document to the specified format + taking into account optional parameters. This method + returns a tuple of two values: a mime type string and + the converted data. + + format -- the target conversion format specified either as an + extension (ex. 'png') or as a mime type + string (ex. 'text/plain') + + kw -- optional parameters which can be passed to the + conversion engine + """ + + def isTargetFormatAllowed(format): + """ + Checks if the current document can be converted + to the specified target format. + + format -- the target conversion format specified either as an + extension (ex. 'png') or as a mime type + string (ex. 'text/plain') + """ + + def isTargetFormatPermitted(format): + """ + Checks if the current user can convert the current + document to the specified target format. + This method can be used to restrict the list of possible + formats to deliver a document to a certain group of + users (ex. read-only PDF only for anonymous users) + + format -- the target conversion format specified either as an + extension (ex. 'png') or as a mime type + string (ex. 'text/plain') + """ + + def getTargetFormatItemList(): + """ + Returns the list of acceptable formats for conversion + in the form of tuples which can be used for example for + listfield in ERP5Form. Each tuple in the list has the form + (title, format) where format is an extension (ex. 'png') + which can be passed to IConvertable.convert or to + IDownloadable.index_html and title is a string which + can be translated and displayed to the user. + + Example of result: + [('ODF Drawing', 'odg'), ('ODF Drawing Template', 'otg'), + ('OpenOffice.org 1.0 Drawing', 'sxd')] + """ + + def getTargetFormatTitleList(): + """ + Returns the list of titles of acceptable formats for conversion + as a list of strings which can be translated and displayed + to the user. + """ + + def getTargetFormatList(): + """ + Returns the list of acceptable formats for conversion + where format is an extension (ex. 'png') which can be + passed to IConvertable.convert or to IDownloadable.index_html + """ \ No newline at end of file diff --git a/product/ERP5/interfaces/uploadable.py b/product/ERP5/interfaces/uploadable.py new file mode 100644 index 0000000000000000000000000000000000000000..76ebabd5cf61aa023a52b819681d11d821b0f967 --- /dev/null +++ b/product/ERP5/interfaces/uploadable.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved. +# Jean-Paul Smets-Solanes <jp@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from zope.interface import Interface + +class IUploadable(Interface): + """ + Uploadable interface specification + + Documents which implement IUploadable can be updated + by uploading a file using multiple formats. IUploadable + provides methods to list possible source formats which + can be uploaded into a document. + """ + + def isSourceFormatAllowed(format): + """ + Checks if a file with the specified format + can be uploaded into the current document. + + format -- the source conversion format specified either as an + extension (ex. 'png') or as a mime type + string (ex. 'text/plain') + """ + + def isSourceFormatPermitted(format): + """ + Checks if the current user can upload into the current + document a file with the specified source format. + This method can be used to restrict the list of possible + formats which can be uploaded into a document to a certain group of + users (ex. users which are known to use + OpenOffice in a company are only allowed to upload ODT files, + as a way to prevent the use of illegal copies of other applications). + + format -- the source conversion format specified either as an + extension (ex. 'png') or as a mime type + string (ex. 'text/plain') + """ + + def getSourceFormatItemList(): + """ + Returns the list of acceptable formats for upload + in the form of tuples which can be used for example for + listfield in ERP5Form. Each tuple in the list has the form + (title, format) where format is an extension (ex. 'png') + which can be passed to IConvertable.convert or to + IDownloadable.index_html and title is a string which + can be translated and displayed to the user. + + Example of result: + [('ODF Drawing', 'odg'), ('ODF Drawing Template', 'otg'), + ('OpenOffice.org 1.0 Drawing', 'sxd')] + """ + + def getSourceFormatTitleList(): + """ + Returns the list of titles of acceptable formats for upload + as a list of strings which can be translated and displayed + to the user. + """ + + def getSourceFormatList(): + """ + Returns the list of acceptable formats for upload + where format is an extension (ex. 'png') which can be + passed to IConvertable.convert or to IDownloadable.index_html + """ \ No newline at end of file diff --git a/product/ERP5/interfaces/watermarkable.py b/product/ERP5/interfaces/watermarkable.py new file mode 100644 index 0000000000000000000000000000000000000000..6a7d5a06d3418a6dab23af559e33766f5492f7ac --- /dev/null +++ b/product/ERP5/interfaces/watermarkable.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved. +# Jean-Paul Smets-Solanes <jp@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsability of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# garantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## + +from zope.interface import Interface + +class IWatermarkable(Interface): + """ + Watermarkable interface specification + + Documents which implement IWatermarkable can be + added a watermark before conversion and download. + """ + + # Declarative interface classification + _subject_list = ('DMS', ) + + def getWatermarkedData(**kw): + """ + Adds a watermark to the original data of this document + (or to base data if IBaseConvertable is implemented) and + return the resulting watermarked data. + + kw -- optional parameters which can be passed to the + watermarking engine + """ +