def uploadImage(self, file, REQUEST=None):
        """
        Upload image to the collection and then return to the referring URL.
        """

        sha1_hash = sha_hexdigest(file)
        for image in self.storage.objectValues('Image'):
            if not hasattr(image, 'sha1_hash'):
                image.sha1_hash = sha_hexdigest(image)
            if sha1_hash == image.sha1_hash:
                return image

        id, title = cookId(None, None, file)
        # first, determine if this is a utf-8 text and not ascii
        try:
            id.decode('ascii')
        except UnicodeError:
            id = id.decode('utf-8')

        orig_id = id
        id = make_id(self.storage, title=title)
        id = manage_addImage(self.storage, id, file, title)
        if REQUEST:
            return REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER'])
        ob = self.storage._getOb(id)
        return ob
Exemple #2
0
def addNyPhoto(self, id='', REQUEST=None, _klass=None, **kwargs):
    """
    Create a Photo type of object.
    """
    if self.is_full():
        return None

    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    if _klass is None:
        _klass = NyPhoto
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    if schema_raw_data.get('sortorder', '') == '':
        schema_raw_data['sortorder'] = DEFAULT_SORTORDER
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    _content_type = schema_raw_data.pop('content_type', '')
    schema_raw_data.setdefault('discussion', getattr(self, 'discussion', 0)) # Fallback from album
    _title = schema_raw_data.pop('title','')

    _file = schema_raw_data.pop('file', '')
    if _file != '' and getattr(_file, 'filename', None) == '':
        _file = ''

    #process parameters
    id, _title = cookId(id, _title, _file)
    id = make_id(self, id=id, title=_title, prefix=PREFIX_NYPHOTO)
    schema_raw_data['title'] = _title

    ob = _klass(id, content_type=_content_type, displays=self.displays.copy())
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    ob = self._getOb(id)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)
    if form_errors:
        raise ValueError(form_errors.popitem()[1]) # pick a random error

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 1, None
    ob.approveThis(approved, approved_by)

    #extra settings
    ob.update_data(_file)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    #redirect if case
    if REQUEST is not None:
        REQUEST.RESPONSE.redirect(self.absolute_url())

    return ob.getId()
    def uploadImage(self, file, REQUEST=None):
        """
        Upload image to the collection and then return to the referring URL.
        """

        sha1_hash = sha_hexdigest(file)
        for image in self.storage.objectValues('Image'):
            if not hasattr(image, 'sha1_hash'):
                image.sha1_hash = sha_hexdigest(image)
            if sha1_hash == image.sha1_hash:
                return image

        id, title = cookId(None, None, file)
        # first, determine if this is a utf-8 text and not ascii
        try:
            id.decode('ascii')
        except UnicodeError:
            id = id.decode('utf-8')

        orig_id = id
        id = make_id(self.storage, title=title)
        id = manage_addImage(self.storage, id, file, title)
        if REQUEST:
            return REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER'])
        ob = self.storage._getOb(id)
        return ob
def addNySimpleConsultation(self, id='', title='', description='', sortorder='', start_date='', end_date='', public_registration='',
                            allow_file='', contributor=None, releasedate='', lang=None, REQUEST=None, **kwargs):
    """
    Create a Naaya Simple Consultation type of object.
    """
    #process parameters
    id = make_id(self, id=id, title=title, prefix='simpleconsultation')
    try: sortorder = abs(int(sortorder))
    except: sortorder = DEFAULT_SORTORDER

    #check mandatory fiels
    l_referer = ''
    if REQUEST is not None: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
    if not(l_referer == 'simpleconsultation_manage_add' or l_referer.find('simpleconsultation_manage_add') != -1) and REQUEST:
        r = self.getSite().check_pluggable_item_properties(METATYPE_OBJECT, id=id, title=title, sortorder=sortorder, \
            start_date=start_date, end_date=end_date, public_registration=public_registration)
    else:
        r = []
    if not len(r):
        #process parameters
        if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()
        if self.glCheckPermissionPublishObjects():
            approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
        else:
            approved, approved_by = 0, None
        releasedate = self.process_releasedate(releasedate)
        if lang is None: lang = self.gl_get_selected_language()
        #create object
        ob = NySimpleConsultation(id, title, description, sortorder, start_date,
                                  end_date, public_registration, allow_file, contributor, releasedate, lang)
        self.gl_add_languages(ob)
        ob.createDynamicProperties(self.processDynamicProperties(METATYPE_OBJECT, REQUEST, kwargs), lang)
        self._setObject(id, ob)
        #extra settings
        ob = self._getOb(id)
        ob.submitThis()
        ob.approveThis(approved, approved_by)
        ob.updateRequestRoleStatus(public_registration, lang)
        ob.checkReviewerRole()
        self.recatalogNyObject(ob)
        self.notifyFolderMaintainer(self, ob)
        #log post date
        auth_tool = self.getAuthenticationTool()
        auth_tool.changeLastPost(contributor)
        #redirect if case
        if REQUEST is not None:
            if l_referer == 'simpleconsultation_manage_add' or l_referer.find('simpleconsultation_manage_add') != -1:
                return self.manage_main(self, REQUEST, update_menu=1)
            elif l_referer == 'simpleconsultation_add_html':
                self.setSession('referer', self.absolute_url())
                REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())
    else:
        if REQUEST is not None:
            self.setSessionErrors(r)
            self.set_pluggable_item_session(METATYPE_OBJECT, id=id, title=title, description=description, \
                sortorder=sortorder, releasedate=releasedate, start_date=start_date, end_date=end_date,
                allow_file=allow_file, public_registration=public_registration, lang=lang)
            REQUEST.RESPONSE.redirect('%s/simpleconsultation_add_html' % self.absolute_url())
        else:
            raise Exception, '%s' % ', '.join(r)
Exemple #5
0
def addNyBFile(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a BFile type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate',
                                                                ''))
    _uploaded_file = schema_raw_data.pop('uploaded_file', None)

    title = schema_raw_data.get('title', '')
    if not title:
        filename = trim_filename(getattr(_uploaded_file, 'filename', ''))
        base_filename = filename.rsplit('.', 1)[0]  # strip extension
        if base_filename:
            schema_raw_data['title'] = title = base_filename.decode('utf-8')
    id = toAscii(id)
    id = make_id(self, id=id, title=title, prefix='file')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    try:
        ob = _create_NyBFile_object(self, id, contributor)
    except BadRequest, err:
        self.setSessionErrorsTrans([err])
        REQUEST.RESPONSE.redirect('%s/bfile_add_html' %
                                  self.absolute_url())
        return
def addNyBFile(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a BFile type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate',
                                                                ''))
    _uploaded_file = schema_raw_data.pop('uploaded_file', None)

    title = schema_raw_data.get('title', '')
    if not title:
        filename = trim_filename(getattr(_uploaded_file, 'filename', ''))
        base_filename = filename.rsplit('.', 1)[0]  # strip extension
        if base_filename:
            schema_raw_data['title'] = title = base_filename.decode('utf-8')
    id = toAscii(id)
    id = make_id(self, id=id, title=title, prefix='file')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    try:
        ob = _create_NyBFile_object(self, id, contributor)
    except BadRequest, err:
        self.setSessionErrorsTrans([err])
        REQUEST.RESPONSE.redirect('%s/bfile_add_html' %
                                  self.absolute_url())
        return
Exemple #7
0
def addNyContact(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an Contact type of object.
    """
    #process parameters
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    schema_raw_data.setdefault('details', '')
    schema_raw_data.setdefault('resourceurl', '')
    schema_raw_data.setdefault('source', '')
    schema_raw_data.setdefault('topitem', '')

    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='contact')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyContact_object(self, id, contributor)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    if REQUEST is not None:
        submitter_errors = submitter.info_check(self, REQUEST, ob)
        form_errors.update(submitter_errors)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            abort_transaction_keep_session(REQUEST)
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/contact_add_html' % self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'contact_manage_add' or l_referer.find('contact_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'contact_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())

    return ob.getId()
Exemple #8
0
def manage_addNyPhotoFolder(self, id='', REQUEST=None, _klass=None, **kwargs):
    """
    Create a PhotoFolder type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    if _klass is None:
        _klass = NyPhotoFolder
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    _cover = schema_raw_data.pop('cover', '')
    _file = schema_raw_data.pop('file', None)

    folder_id = make_id(self, id=id, title=schema_raw_data['title'], prefix=PREFIX_NYPHOTOFOLDER)

    ob = _klass(folder_id)
    self.gl_add_languages(ob)
    self._setObject(folder_id, ob)

    ob = self._getOb(folder_id)
    if getattr(_file, 'filename', None):
        kwargs_ = {}
        for k, v in schema_raw_data.iteritems():
            if k in ob.inherit_fields:
                kwargs_[k] = v
            elif '.' in k and k.split('.')[0] in ob.inherit_fields:
                kwargs_[k] = v
        ob.uploadPhotoOrZip(_file, **kwargs_)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)
    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/photofolder_add_html' % self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 1, None
    ob._setPropValue('cover', _cover)

    ob.approveThis(approved, approved_by)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    #redirect if case
    if REQUEST is not None:
        return REQUEST.RESPONSE.redirect(self.absolute_url())
    return ob.getId()
def addNyEduProduct(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an Educational Product type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    _contact_word = schema_raw_data.get('contact_word', '')

    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='ep')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyEduProduct_object(self, id, contributor)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    #check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(_contact_word, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/eduproduct_add_html' % self.absolute_url())
            return

    #process parameters
    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'eduproduct_manage_add' or l_referer.find('eduproduct_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'eduproduct_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())

    return ob.getId()
Exemple #10
0
def _create_NyMeeting_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix="meeting")
    ob = NyMeeting(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #11
0
def _create_NyPointer_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='pointer')
    ob = NyPointer(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #12
0
def _create_NySemNews_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix=PREFIX_OBJECT)
    ob = NySemNews(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #13
0
def _create_NyBestPractice_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='bestpractice')
    ob = NyBestPractice(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_LocalizedNyBFile_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='localizedfile')
    ob = NyLocalizedBFile(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NyOrganisation_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='organisation')
    ob = NyOrganisation(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_LocalizedNyBFile_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='localizedfile')
    ob = NyLocalizedBFile(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NyOrganisation_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='organisation')
    ob = NyOrganisation(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NySemEvent_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix=PREFIX_OBJECT)
    ob = NySemEvent(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #19
0
def _create_NyDocument_object(parent, id, contributor):
    id = make_id(parent, id=id)
    ob = NyDocument(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NyBestPractice_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='bestpractice')
    ob = NyBestPractice(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NyAPNCBPhoto_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='apncbphoto')
    ob = NyAPNCBPhoto(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #22
0
def _create_NyFile_object(parent, id, title, file, precondition, contributor):
    id = make_id(parent, id=id, title=title, prefix='file')
    ob = NyFile_extfile(id, title, file, precondition, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #23
0
def _create_NyExFile_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='exfile')
    ob = NyExFile_extfile(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
def _create_NyEduProduct_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='eduproduct')
    ob = NyEduProduct(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #25
0
def _create_NyProject_object(parent, id, contributor):
    id = make_id(parent, id=id, prefix='project')
    ob = NyProject(id, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.after_setObject()
    return ob
Exemple #26
0
 def test_by_nothing_with_temp(self):
     self.parent = Parent('contact', 'contact-1', 'contact-3')
     self.temp_parent = Parent('contact-2', 'contact-4', 'contact-6')
     id = make_id(self.parent,
                  temp_parent=self.temp_parent,
                  id='',
                  title='',
                  prefix='')
     self.assertEqual(len(id), 5)
Exemple #27
0
 def test_by_prefix_with_temp(self):
     self.parent = Parent('contact', 'contact-1', 'contact-3')
     self.temp_parent = Parent('contact-2', 'contact-4', 'contact-6')
     id = make_id(self.parent,
                  temp_parent=self.temp_parent,
                  id='',
                  title='',
                  prefix='contact')
     self.assertEqual(id[:-5], 'contact')
def _create_NyMunicipality_object(parent, id, title, contributor):
    id = make_id(parent, id=id, title=title, prefix='municipality')
    ob = NyMunicipality(id, title, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.species = []
    ob.after_setObject()
    return ob
def addNySemTextLaws(self, id='', contributor=None, REQUEST=None, **kwargs):
    """ """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    #process parameters
    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix=PREFIX_OBJECT)
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))

    ob = _create_NySemTextLaws_object(self, id, contributor)
    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    if REQUEST is not None:
        submitter_errors = submitter.info_check(self, REQUEST, ob)
        form_errors.update(submitter_errors)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/semtextlaws_add_html' % self.absolute_url())

    if 'file' in schema_raw_data:
        ob.handleUpload(schema_raw_data['file'])

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()
    ob.updatePropertiesFromGlossary(_lang)

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    zope.event.notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))

    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'semtextlaws_manage_add' or l_referer.find('semtextlaws_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'semtextlaws_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/semtextlaws_add_html' % self.absolute_url())
    return ob.getId()
Exemple #30
0
def manage_addRefTree(self, id='', title='', description='', lang=None, REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE)
    if lang is None: lang = self.gl_get_selected_language()
    ob = RefTree(id, title, description, lang)
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
    return id
Exemple #31
0
def _create_NyExpert_object(parent, id, title, contributor):
    id = make_id(parent, id=id, title=title, prefix='expert')
    ob = NyExpert(id, title, contributor)
    parent.gl_add_languages(ob)
    parent._setObject(id, ob)
    ob = parent._getOb(id)
    ob.picture = None
    ob.cv = None
    ob.after_setObject()
    return ob
Exemple #32
0
def addNySemFunding(self, id='', contributor=None, REQUEST=None, **kwargs):
    """ """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    #process parameters
    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix=PREFIX_OBJECT)
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))

    ob = _create_NySemFunding_object(self, id, contributor)
    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    if REQUEST is not None:
        submitter_errors = submitter.info_check(self, REQUEST, ob)
        form_errors.update(submitter_errors)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/semfunding_add_html' % self.absolute_url())

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()
    ob.updatePropertiesFromGlossary(_lang)

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    zope.event.notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))

    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'semfunding_manage_add' or l_referer.find('semfunding_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'semfunding_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/semfunding_add_html' % self.absolute_url())
    return ob.getId()
def addNyPhotoGallery(self, id="", REQUEST=None, contributor=None, _klass=None, **kwargs):
    """
    Create a Photo Gallery.
    """

    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    if _klass is None:
        _klass = NyPhotoGallery
    _lang = schema_raw_data.pop("_lang", schema_raw_data.pop("lang", None))
    _releasedate = self.process_releasedate(schema_raw_data.pop("releasedate", ""))

    gallery_id = make_id(self, id=id, title=schema_raw_data["title"], prefix=PREFIX_NYPHOTOGALLERY)
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _klass(gallery_id, contributor)
    self.gl_add_languages(ob)
    self._setObject(gallery_id, ob)
    ob = self._getOb(gallery_id)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)
    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction

            transaction.abort()  # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect("%s/gallery_add_html" % self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 1, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    # redirect if case
    if REQUEST is not None:
        return REQUEST.RESPONSE.redirect(self.absolute_url())

    return ob.getId()
Exemple #34
0
def manage_addMegaSurvey(context,
                         id='',
                         title='',
                         lang=None,
                         REQUEST=None,
                         **kwargs):
    """ """
    title = title or 'Survey'
    id = make_id(context, id=id, title=title)

    # Get selected language
    lang = REQUEST and REQUEST.form.get('lang', None)
    lang = lang or kwargs.get('lang', context.gl_get_selected_language())

    if REQUEST:
        kwargs.update(REQUEST.form)
    kwargs['releasedate'] = context.process_releasedate(
        kwargs.get('releasedate', DateTime()))
    kwargs['expirationdate'] = context.process_releasedate(
        kwargs.get('expirationdate', DateTime()))
    contributor = context.REQUEST.AUTHENTICATED_USER.getUserName()
    # log post date
    auth_tool = context.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)

    kwargs.setdefault('id', id)
    kwargs.setdefault('title', title)
    kwargs.setdefault('lang', lang)
    kwargs.setdefault('contributor', contributor)

    ob = MegaSurvey(**kwargs)
    context.gl_add_languages(ob)
    context._setObject(id, ob)

    ob = context._getOb(id)
    ob.updatePropertiesFromGlossary(lang)
    ob.submitThis()
    context.recatalogNyObject(ob)

    # Return
    if not REQUEST:
        return id
    # redirect if case
    if 'submitted' in REQUEST:
        ob.submitThis()
    l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
    if (l_referer == 'megasurvey_manage_add'
            or l_referer.find('megasurvey_manage_add') != -1):
        return context.manage_main(context, REQUEST, update_menu=1)
    elif l_referer == 'megasurvey_add_html':
        context.setSession('referer', context.absolute_url())
        REQUEST.RESPONSE.redirect(context.absolute_url())
Exemple #35
0
def addNyForum(self, id='', title='', description='', categories='', file_max_size=0, REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM)
    categories = self.utConvertLinesToList(categories)
    file_max_size = abs(int(file_max_size))
    ob = NyForum(id, title, description, categories, file_max_size)
    self._setObject(id, ob)
    if not REQUEST:
        return id
    # Redirect
    if not REQUEST.form.get('redirect_url', None):
        return self.manage_main(self, REQUEST, update_menu=1)
    REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
    def upload_file(self, REQUEST):
        """ """
        temp_folder = self.getSite().temp_folder
        file = REQUEST.form.get('upload_file', None)
        if file is None:
            return None

        try:
            image = Image.open(file)
        except:  # Python Imaging Library doesn't recognize it as an image
            return None

        x, y = image.size
        filename = file.filename

        image_format = image.format
        if not image_format:
            _, ext = os.path.splitext(filename)
            image_format = ext
        # can't leave empty because image.save will crash
        if not image_format:
            image_format = 'JPEG'

        MAX_SIZE = 400
        if x >= MAX_SIZE and x >= y:
            x, y = MAX_SIZE, y * MAX_SIZE / x
            resize = True
        elif y >= MAX_SIZE and y >= x:
            x, y = x * MAX_SIZE / y, MAX_SIZE
            resize = True
        else:
            resize = False
        if resize:
            try:
                image = image.resize((x, y), Image.ANTIALIAS)
            except AttributeError:
                image = image.resize((x, y))

        image_io = StringIO()
        image.save(image_io, image_format, quality=85)

        id = make_id(temp_folder, id=filename)
        manage_addImage(temp_folder, id, file=image_io.getvalue())
        ob = getattr(temp_folder, id)
        ob.filename = filename
        ob.p_changed = 1

        if x > y:
            return (ob.absolute_url(), (x-y)/2, 0, y + (x-y)/2, y, resize)
        else:
            return (ob.absolute_url(), 0, (y-x)/2, x, x + (y-x)/2, resize)
Exemple #37
0
def manage_addRefTreeNode(self, id='', title='', parent=None, pickable='',
    lang=None, REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE)
    if parent == '': parent = None
    if pickable: pickable = 1
    else: pickable = 0
    if lang is None: lang = self.gl_get_selected_language()
    ob = RefTreeNode(id, title, parent, pickable, lang)
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
    return id
Exemple #38
0
def manage_addRefTree(self,
                      id='',
                      title='',
                      description='',
                      lang=None,
                      REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE)
    if lang is None: lang = self.gl_get_selected_language()
    ob = RefTree(id, title, description, lang)
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
    return id
Exemple #39
0
def manage_addMegaSurvey(context, id='', title='', lang=None, REQUEST=None,
                         **kwargs):
    """ """
    title = title or 'Survey'
    id = make_id(context, id=id, title=title)

    # Get selected language
    lang = REQUEST and REQUEST.form.get('lang', None)
    lang = lang or kwargs.get('lang', context.gl_get_selected_language())

    if REQUEST:
        kwargs.update(REQUEST.form)
    kwargs['releasedate'] = context.process_releasedate(
        kwargs.get('releasedate', DateTime()))
    kwargs['expirationdate'] = context.process_releasedate(
        kwargs.get('expirationdate', DateTime()))
    contributor = context.REQUEST.AUTHENTICATED_USER.getUserName()
    # log post date
    auth_tool = context.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)

    kwargs.setdefault('id', id)
    kwargs.setdefault('title', title)
    kwargs.setdefault('lang', lang)
    kwargs.setdefault('contributor', contributor)

    ob = MegaSurvey(**kwargs)
    context.gl_add_languages(ob)
    context._setObject(id, ob)

    ob = context._getOb(id)
    ob.updatePropertiesFromGlossary(lang)
    ob.submitThis()
    context.recatalogNyObject(ob)

    # Return
    if not REQUEST:
        return id
    # redirect if case
    if 'submitted' in REQUEST:
        ob.submitThis()
    l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
    if (l_referer == 'megasurvey_manage_add' or
            l_referer.find('megasurvey_manage_add') != -1):
        return context.manage_main(context, REQUEST, update_menu=1)
    elif l_referer == 'megasurvey_add_html':
        context.setSession('referer', context.absolute_url())
        REQUEST.RESPONSE.redirect(context.absolute_url())
def addNyForum(self, id='', title='', description='', categories='', file_max_size=0, REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM)
    categories = self.utConvertLinesToList(categories)
    file_max_size = abs(int(file_max_size))
    contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()
    ob = NyForum(id, title, description, categories, file_max_size, contributor)
    ob.releasedate = self.process_releasedate()
    self._setObject(id, ob)
    self[id].loadDefaultData()
    if not REQUEST:
        return id
    # Redirect
    if not REQUEST.form.get('redirect_url', None):
        return self.manage_main(self, REQUEST, update_menu=1)
    REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
Exemple #41
0
def addNyStory(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a Story type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    schema_raw_data.setdefault('body', '')
    schema_raw_data.setdefault('resourceurl', '')
    schema_raw_data.setdefault('source', '')
    schema_raw_data.setdefault('topitem', '')
    _frontpicture = schema_raw_data.pop('frontpicture', '')

    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='story')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyStory_object(self, id, contributor)
    ob._setLocalPropValue('title', _lang, '')

    sortorder_widget = ob._get_schema().getWidget('sortorder')
    schema_raw_data.setdefault('sortorder', sortorder_widget.default)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate, _all_values=False)
    if form_errors:
        raise ValueError(form_errors.popitem()[1]) # pick a random error

    ob.setFrontPicture(_frontpicture)

    if kwargs.has_key('submitted'): ob.submitThis()
    if self.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        if REQUEST.has_key('submitted'): ob.submitThis()
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'story_manage_add' or l_referer.find('story_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'story_add_html':
            self.setSession('referer', self.absolute_url())
            REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())
    return ob.getId()
Exemple #42
0
    def upload_maintopic_temp_image(self, REQUEST):
        """ """
        temp_folder = self.getSite().temp_folder
        file = REQUEST.form.get("upload_file", None)
        if file is None:
            return json_response({'error': "no file"}, REQUEST.RESPONSE)

        id = make_id(temp_folder)
        manage_addImage(temp_folder, id, file=file)
        ob = getattr(temp_folder, id)

        skin = self.getLayoutTool().getCurrentSkin()
        image_size = map(int, skin.main_section_image_size.split("x"))

        try:
            data = crop_image(ob, image_size)
        except AssertionError, e:
            data = {"error": str(e)}
Exemple #43
0
def manage_addRefTreeNode(self,
                          id='',
                          title='',
                          parent=None,
                          pickable='',
                          lang=None,
                          REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_SUFIX_REFTREE)
    if parent == '': parent = None
    if pickable: pickable = 1
    else: pickable = 0
    if lang is None: lang = self.gl_get_selected_language()
    ob = RefTreeNode(id, title, parent, pickable, lang)
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    if REQUEST is not None:
        return self.manage_main(self, REQUEST, update_menu=1)
    return id
Exemple #44
0
    def upload_maintopic_temp_image(self, REQUEST):
        """ """
        temp_folder = self.getSite().temp_folder
        file = REQUEST.form.get("upload_file", None)
        if file is None:
            return json_response({'error': "no file"}, REQUEST.RESPONSE)

        filename = file.filename
        id = make_id(temp_folder, id=filename)
        manage_addImage(temp_folder, id, file=file)
        ob = getattr(temp_folder, id)

        skin = self.getLayoutTool().getCurrentSkin()
        image_size = map(int, skin.main_section_image_size.split("x"))

        try:
            data = crop_image(ob, image_size)
        except AssertionError, e:
            data = {"error": str(e)}
Exemple #45
0
def addNyForum(self,
               id='',
               title='',
               description='',
               categories='',
               file_max_size=0,
               REQUEST=None):
    """ """
    id = make_id(self, id=id, title=title, prefix=PREFIX_NYFORUM)
    categories = self.utConvertLinesToList(categories)
    file_max_size = abs(int(file_max_size))
    contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()
    ob = NyForum(id, title, description, categories, file_max_size,
                 contributor)
    ob.releasedate = self.process_releasedate()
    self._setObject(id, ob)
    self[id].loadDefaultData()
    if not REQUEST:
        return id
    # Redirect
    if not REQUEST.form.get('redirect_url', None):
        return self.manage_main(self, REQUEST, update_menu=1)
    REQUEST.RESPONSE.redirect('%s/index_html' % self.absolute_url())
Exemple #46
0
def addNyPhotoGallery(self,
                      id='',
                      REQUEST=None,
                      contributor=None,
                      _klass=None,
                      **kwargs):
    """
    Create a Photo Gallery.
    """

    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    if _klass is None:
        _klass = NyPhotoGallery
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(
        schema_raw_data.pop('releasedate', ''))

    gallery_id = make_id(self,
                         id=id,
                         title=schema_raw_data['title'],
                         prefix=PREFIX_NYPHOTOGALLERY)
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _klass(gallery_id, contributor)
    self.gl_add_languages(ob)
    self._setObject(gallery_id, ob)
    ob = self._getOb(gallery_id)

    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)
    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort(
            )  # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/gallery_add_html' %
                                      self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
        )
    else:
        approved, approved_by = 1, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    #redirect if case
    if REQUEST is not None:
        return REQUEST.RESPONSE.redirect(self.absolute_url())

    return ob.getId()
Exemple #47
0
def addNyNetwork(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a Info type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    _send_notifications = schema_raw_data.pop('_send_notifications', True)
    _title = schema_raw_data['title']
    _contact_word = schema_raw_data.get('contact_word', '')

    #process parameters
    id = make_id(self, id=id, title=_title, prefix=PREFIX_OBJECT)
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_object(self, id, _title, contributor)
    ob.last_modification = time.localtime()

    _city = schema_raw_data.get('organisation_city', None)
    _country = schema_raw_data.get('organisation_country', None)
    if _city or _country:
        #remove the empty geo_location string (default when the geo_location widget is hidden)
        if schema_raw_data.get('geo_location', None) == '':
            schema_raw_data.pop('geo_location')
        _address = _city + ', ' + _country
        schema_raw_data['geo_location.lat'], schema_raw_data['geo_location.lon'] = ob.do_geocoding(_address)
        schema_raw_data['geo_location.address'] = _address

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    #ON IMPORT:
    if REQUEST is None:
        #Overwrite the values of properties attached to single select lists
        #if the import data contains several values...
        for k, v in DEFAULT_SCHEMA.items():
            if DEFAULT_SCHEMA[k].has_key('property_type') and\
                DEFAULT_SCHEMA[k]['property_type'] in ['Sdo category', 'Sdo extra property']:
                if v['widget_type'] == 'Select':
                    if len(schema_raw_data[k]) == 1:
                        setattr(ob, k, schema_raw_data[k][0])
                    else:
                        setattr(ob, k, schema_raw_data[k])

    #check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(_contact_word, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator
    
    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/network_add_html' % self.absolute_url())
            return

    #process parameters
    if self.glCheckPermissionPublishObjects():
        if REQUEST is None:
            approved = schema_raw_data.get('approved', 0)
            approved_by = schema_raw_data.get('approved_by', None)
        else:
            approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    if ob.discussion: ob.open_for_comments()

    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        REQUEST.RESPONSE.redirect('%s/%s' % (self.absolute_url(), ob.id))
    transaction.commit()
    return ob.getId()
Exemple #48
0
def addNyProject(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an Project type of object.
    """
    #process parameters
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    schema_raw_data.setdefault('details', '')
    schema_raw_data.setdefault('resourceurl', '')
    schema_raw_data.setdefault('source', '')
    schema_raw_data.setdefault('topitem', '')
    _project_word = schema_raw_data.get('project_word', '')

    id = make_id(self, id=id, title=schema_raw_data.get('title', ''), prefix='project')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyProject_object(self, id, contributor)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    #check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(_project_word, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            import transaction; transaction.abort() # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/project_add_html' % self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    #Organisation data (list of OrganisationRecord objects)
    ob.organisations = []

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'project_manage_add' or l_referer.find('project_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'project_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())

    return ob.getId()
Exemple #49
0
def addNyPhotoFolder(self,
                     id='',
                     REQUEST=None,
                     contributor=None,
                     _klass=None,
                     **kwargs):
    """
    Create a PhotoFolder type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    if _klass is None:
        _klass = NyPhotoFolder
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(
        schema_raw_data.pop('releasedate', ''))
    _cover = schema_raw_data.pop('cover', '')
    _file = schema_raw_data.pop('file', None)

    folder_id = make_id(self,
                        id=id,
                        title=schema_raw_data['title'],
                        prefix=PREFIX_NYPHOTOFOLDER)
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _klass(folder_id, contributor)
    self.gl_add_languages(ob)
    self._setObject(folder_id, ob)

    ob = self._getOb(folder_id)
    if getattr(_file, 'filename', None):
        kwargs_ = {}
        for k, v in schema_raw_data.iteritems():
            if k in ob.inherit_fields:
                kwargs_[k] = v
            elif '.' in k and k.split('.')[0] in ob.inherit_fields:
                kwargs_[k] = v
        ob.uploadPhotoOrZip(_file, **kwargs_)

    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)
    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort(
            )  # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/photofolder_add_html' %
                                      self.absolute_url())
            return

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
        )
    else:
        approved, approved_by = 1, None
    ob._setPropValue('cover', _cover)

    ob.approveThis(approved, approved_by)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    #redirect if case
    if REQUEST is not None:
        return REQUEST.RESPONSE.redirect(self.absolute_url())
    return ob.getId()
Exemple #50
0
def addNyInfoFolder(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create an infofolder type of object.
    """
    #process parameters
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _folder_meta_types = schema_raw_data.pop('folder_meta_types', '')

    id = make_id(self,
                 id=id,
                 title=schema_raw_data.get('title', ''),
                 prefix='infofolder')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyInfoFolder_object(self, id, contributor)

    ob.info_type = 'enterprises'

    ob.set_categories()
    _releasedate = DateTime()
    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort(
            )  # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            return REQUEST.RESPONSE.redirect('%s/infofolder_add_html' %
                                             self.absolute_url())
            return

    site = self.getSite()
    #extra settings
    ob_meta_types = FolderMetaTypes(ob)
    parent_meta_types = FolderMetaTypes(self)
    if _folder_meta_types == '':
        #inherit allowd meta types from the parent
        if self.meta_type == site.meta_type:
            ob_meta_types.set_values(site.adt_meta_types)
        else:
            if not parent_meta_types.has_custom_value:
                # if parent uses defaults, so should `ob`
                ob_meta_types.set_values(None)
            else:
                ob_meta_types.set_values(parent_meta_types.get_values())
    else:
        ob_meta_types.set_values(self.utConvertToList(_folder_meta_types))

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
        )
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    #Process extra fields (categories, extra_properties)

    if ob.discussion: ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        #l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        #if l_referer == 'infofolder_manage_add' or l_referer.find('infofolder_manage_add') != -1:
        #return self.manage_main(self, REQUEST, update_menu=1)
        #elif l_referer == 'infofolder_add_html':
        #self.setSession('referer', self.absolute_url())
        #return ob.object_submitted_message(REQUEST)
        #REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())
        REQUEST.RESPONSE.redirect('%s/%s/edit_html' %
                                  (self.absolute_url(), id))

    return ob.getId()
Exemple #51
0
 def test_by_nothing(self):
     self.parent = Parent('contact', 'contact-1', 'contact-3')
     id = make_id(self.parent, id='', title='', prefix='')
     self.assertEqual(len(id), 5)
Exemple #52
0
def addNyExpert(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a Expert type of object.
    """

    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate',
                                                                ''))

    schema_raw_data.pop('_send_notifications', True)

    _title = '%s %s' % (schema_raw_data.get('name', ''),
                        schema_raw_data.get('surname', ''))
    schema_raw_data['title'] = _title
    recaptcha_response = schema_raw_data.get('g-recaptcha-response', '')

    # process parameters
    id = make_id(self, id=id, title=_title, prefix='expert')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyExpert_object(self, id, _title, contributor)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang,
                                            _override_releasedate=_releasedate)

    # check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort()
            # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/expert_add_html' %
                                      self.absolute_url())
            return

    # process parameters
    if self.glCheckPermissionPublishObjects():
        approved, approved_by = (
            1, self.REQUEST.AUTHENTICATED_USER.getUserName())
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    # Process uploaded files
    ob.save_file(schema_raw_data, 'picture', 'expert_picture')
    ob.save_file(schema_raw_data, 'cv', 'expert_cv')

    # Employment history data (list of EmploymentRecord objects)
    ob.employment_history = []

    if ob.discussion:
        ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    # log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    # redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if (l_referer == 'expert_manage_add' or
                l_referer.find('expert_manage_add') != -1):
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'expert_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)

    return ob.getId()
Exemple #53
0
def addNyYoutube(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a Youtube embeded video.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(
        schema_raw_data.pop('releasedate', ''))
    recaptcha_response = schema_raw_data.get('g-recaptcha-response', '')

    id = make_id(self,
                 id=id,
                 title=schema_raw_data.get('title', ''),
                 prefix='ep')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyYoutube_object(self, id, contributor)

    if schema_raw_data['iframe_width'] in ['', '0']:
        schema_raw_data['iframe_width'] = 640
    if schema_raw_data['iframe_height'] in ['', '0']:
        schema_raw_data['iframe_height'] = 360

    if len(schema_raw_data['youtube_id']) > 11:
        try:
            schema_raw_data['youtube_id'] = schema_raw_data[
                'youtube_id'].split('watch?v=')[1][:11]
        except IndexError:
            schema_raw_data['youtube_id'] = schema_raw_data[
                'youtube_id'].split('&v=')[1][:11]

    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)

    try:
        schema_raw_data['iframe_width'] = int(schema_raw_data['iframe_width'])
    except ValueError:
        form_errors['iframe_width'] = ['Integer value required.']
    try:
        schema_raw_data['iframe_height'] = int(
            schema_raw_data['iframe_height'])
    except ValueError:
        form_errors['iframe_height'] = ['Integer value required.']
    if not schema_raw_data['youtube_id']:
        form_errors['youtube_id'] = ['Youtube Id is mandatory']

    if schema_raw_data['youtube_id']:
        yt_service = YouTubeService()
        try:
            yt_service.GetYouTubeVideoEntry(
                video_id=schema_raw_data['youtube_id'])
        except RequestError:
            form_errors['youtube_id'] = [
                'Invalid Youtube ID (inexisting video)'
            ]

    # check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            transaction.abort()
            # because we already called _crete_NyZzz_object
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/youtube_add_html' %
                                      self.absolute_url())
            return

    # process parameters
    if self.glCheckPermissionPublishObjects():
        approved, approved_by = (1,
                                 self.REQUEST.AUTHENTICATED_USER.getUserName())
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    if ob.discussion:
        ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    # log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    # redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if (l_referer == 'youtube_manage_add'
                or l_referer.find('youtube_manage_add') != -1):
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'youtube_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)
            REQUEST.RESPONSE.redirect('%s/messages_html' % self.absolute_url())

    return ob.getId()
Exemple #54
0
def addNyBFile(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a BFile type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate', ''))
    _uploaded_file = schema_raw_data.pop('uploaded_file', None)

    title = schema_raw_data.get('title', '')
    if not title:
        filename = trim_filename(getattr(_uploaded_file, 'filename', ''))
        base_filename = filename.rsplit('.', 1)[0] # strip extension
        if base_filename:
            schema_raw_data['title'] = title = base_filename.decode('utf-8')
    id = toAscii(id)
    id = make_id(self, id=id, title=title, prefix='file')
    if contributor is None: contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyBFile_object(self, id, contributor)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang, _override_releasedate=_releasedate)

    if REQUEST is not None:
        submitter_errors = submitter.info_check(self, REQUEST, ob)
        form_errors.update(submitter_errors)

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1]) # pick a random error
        else:
            abort_transaction_keep_session(REQUEST)
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/bfile_add_html' % self.absolute_url())
            return

    if file_has_content(_uploaded_file):
        ob._save_file(_uploaded_file, contributor)

    #process parameters
    if self.checkPermissionSkipApproval():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName()
    else:
        approved, approved_by = 0, None

    _send_notif = kwargs.get('_send_notifications', True)
    ob.approveThis(approved, approved_by, _send_notifications=_send_notif)
    ob.submitThis()

    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    #log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    #redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if l_referer == 'bfile_manage_add' or l_referer.find('bfile_manage_add') != -1:
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'bfile_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)

    return ob.getId()
def addNyMunicipality(self, id='', REQUEST=None, contributor=None, **kwargs):
    """
    Create a Municipality type of object.
    """
    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    _releasedate = self.process_releasedate(schema_raw_data.pop('releasedate',
                                                                ''))

    schema_raw_data.pop('_send_notifications')

    _title = '%s, %s' % (
        schema_raw_data.get('municipality', ''),
        self.get_node_title('provinces',
                            schema_raw_data.get('province', '')))
    schema_raw_data['title'] = _title
    recaptcha_response = schema_raw_data.get('g-recaptcha-response', '')

    # process parameters
    id = make_id(self, id=id, title=_title, prefix='municipality')
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()

    ob = _create_NyMunicipality_object(self, id, _title, contributor)

    ambassador_species = schema_raw_data.pop('ambassador_species', '')
    ambassador_species_description = schema_raw_data.pop(
        'ambassador_species_description', '')

    # picture processing
    upload_picture_url = schema_raw_data.pop('upload_picture_url', None)
    if upload_picture_url:
        temp_folder = self.getSite().temp_folder
        picture_id = upload_picture_url.split('/')[-1]
        ambassador_species_picture = getattr(temp_folder, picture_id)
    else:
        ambassador_species_picture = None
    x1 = schema_raw_data.pop('x1')
    y1 = schema_raw_data.pop('y1')
    x2 = schema_raw_data.pop('x2')
    y2 = schema_raw_data.pop('y2')
    crop_coordinates = (x1, y1, x2, y2)

    form_errors = ob.process_submitted_form(schema_raw_data, _lang,
                                            _override_releasedate=_releasedate)

    ob.process_species(
        None, None, ambassador_species, ambassador_species_description,
        ambassador_species_picture, crop_coordinates, form_errors)

    # check Captcha/reCaptcha
    if not self.checkPermissionSkipCaptcha():
        captcha_validator = self.validateCaptcha(recaptcha_response, REQUEST)
        if captcha_validator:
            form_errors['captcha'] = captcha_validator

    if form_errors:
        if REQUEST is None:
            raise ValueError(form_errors.popitem()[1])  # pick a random error
        else:
            import transaction
            # because we already called _crete_NyZzz_object
            transaction.abort()
            schema_raw_data['ambassador_species'] = ambassador_species
            schema_raw_data['ambassador_species_description'] = \
                ambassador_species_description
            ob._prepare_error_response(REQUEST, form_errors, schema_raw_data)
            REQUEST.RESPONSE.redirect('%s/municipality_add_html' %
                                      self.absolute_url())
            return

    # process parameters
    if self.glCheckPermissionPublishObjects():
        approved, approved_by = (1,
                                 self.REQUEST.AUTHENTICATED_USER.getUserName())
    else:
        approved, approved_by = 0, None
    ob.approveThis(approved, approved_by)
    ob.submitThis()

    # Overwrite any inconsistent values in the choice property
    if not ob.species and ob.choice == u'3':
        ob.choice = u'1'
        ob._p_changed = True
    if ob.species:
        ob.choice = u'3'
        ob._p_changed = True

    if ob.discussion:
        ob.open_for_comments()
    self.recatalogNyObject(ob)
    notify(NyContentObjectAddEvent(ob, contributor, schema_raw_data))
    # log post date
    auth_tool = self.getAuthenticationTool()
    auth_tool.changeLastPost(contributor)
    # redirect if case
    if REQUEST is not None:
        l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
        if (l_referer == 'municipality_manage_add' or
                l_referer.find('municipality_manage_add') != -1):
            return self.manage_main(self, REQUEST, update_menu=1)
        elif l_referer == 'municipality_add_html':
            self.setSession('referer', self.absolute_url())
            return ob.object_submitted_message(REQUEST)

    return ob.getId()
Exemple #56
0
def addNyConsultation(self,
                      id='',
                      title='',
                      description='',
                      sortorder='',
                      start_date='',
                      end_date='',
                      public_registration='',
                      allow_file='',
                      line_comments='',
                      contributor=None,
                      releasedate='',
                      lang=None,
                      REQUEST=None,
                      **kwargs):
    """
    Create a Naaya Consultation type of object.
    """
    #process parameters
    id = make_id(self, id=id, title=title, prefix='consultation')
    try:
        sortorder = abs(int(sortorder))
    except:
        sortorder = DEFAULT_SORTORDER

    #check mandatory fiels
    l_referer = ''
    if REQUEST is not None: l_referer = REQUEST['HTTP_REFERER'].split('/')[-1]
    if not (l_referer == 'consultation_manage_add'
            or l_referer.find('consultation_manage_add') != -1) and REQUEST:
        r = self.getSite().check_pluggable_item_properties(METATYPE_OBJECT, id=id, title=title, sortorder=sortorder, \
            start_date=start_date, end_date=end_date, public_registration=public_registration, line_comments=line_comments)
    else:
        r = []
    if not len(r):
        #process parameters
        if contributor is None:
            contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()
        if self.glCheckPermissionPublishObjects():
            approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
            )
        else:
            approved, approved_by = 0, None
        releasedate = self.process_releasedate(releasedate)
        if lang is None: lang = self.gl_get_selected_language()
        #create object
        ob = NyConsultation(id, title, description, sortorder, start_date,
                            end_date, public_registration, allow_file,
                            line_comments, contributor, releasedate, lang)
        self.gl_add_languages(ob)
        ob.createDynamicProperties(
            self.processDynamicProperties(METATYPE_OBJECT, REQUEST, kwargs),
            lang)
        self._setObject(id, ob)
        #extra settings
        ob = self._getOb(id)
        ob.submitThis()
        ob.default_rating()
        ob.updateRequestRoleStatus(public_registration, lang)
        ob.checkReviewerRole()
        self.recatalogNyObject(ob)
        self.notifyFolderMaintainer(self, ob)
        #log post date
        auth_tool = self.getAuthenticationTool()
        auth_tool.changeLastPost(contributor)
        #redirect if case
        if REQUEST is not None:
            if l_referer == 'consultation_manage_add' or l_referer.find(
                    'consultation_manage_add') != -1:
                return self.manage_main(self, REQUEST, update_menu=1)
            elif l_referer == 'consultation_add_html':
                self.setSession('referer', self.absolute_url())
                REQUEST.RESPONSE.redirect('%s/messages_html' %
                                          self.absolute_url())
    else:
        if REQUEST is not None:
            self.setSessionErrors(r)
            self.set_pluggable_item_session(METATYPE_OBJECT, id=id, title=title, description=description, \
                sortorder=sortorder, releasedate=releasedate, start_date=start_date, end_date=end_date,
                allow_file=allow_file, line_comments=line_comments, public_registration=public_registration, lang=lang)
            REQUEST.RESPONSE.redirect('%s/consultation_add_html' %
                                      self.absolute_url())
        else:
            raise Exception, '%s' % ', '.join(r)
Exemple #57
0
def addNyPhoto(self,
               id='',
               REQUEST=None,
               contributor=None,
               _klass=None,
               **kwargs):
    """
    Create a Photo type of object.
    """
    if self.is_full():
        return None

    if REQUEST is not None:
        schema_raw_data = dict(REQUEST.form)
    else:
        schema_raw_data = kwargs

    if _klass is None:
        _klass = NyPhoto
    _lang = schema_raw_data.pop('_lang', schema_raw_data.pop('lang', None))
    if schema_raw_data.get('sortorder', '') == '':
        schema_raw_data['sortorder'] = DEFAULT_SORTORDER
    _releasedate = self.process_releasedate(
        schema_raw_data.pop('releasedate', ''))
    _content_type = schema_raw_data.pop('content_type', '')
    schema_raw_data.setdefault('discussion', getattr(self, 'discussion',
                                                     0))  # Fallback from album
    _title = schema_raw_data.pop('title', '')

    _file = schema_raw_data.pop('file', '')
    if _file != '' and getattr(_file, 'filename', None) == '':
        _file = ''

    #process parameters
    if id:
        id = clean_display_id(id)
    id = make_id(self, id=id, title=(_title or _file), prefix=PREFIX_NYPHOTO)
    if contributor is None:
        contributor = self.REQUEST.AUTHENTICATED_USER.getUserName()
    schema_raw_data['title'] = _title

    ob = _klass(id,
                contributor=contributor,
                content_type=_content_type,
                displays=self.displays.copy())
    self.gl_add_languages(ob)
    self._setObject(id, ob)
    ob = self._getOb(id)

    form_errors = ob.process_submitted_form(schema_raw_data,
                                            _lang,
                                            _override_releasedate=_releasedate)
    if form_errors:
        raise ValueError(form_errors.popitem()[1])  # pick a random error

    if self.glCheckPermissionPublishObjects():
        approved, approved_by = 1, self.REQUEST.AUTHENTICATED_USER.getUserName(
        )
    else:
        approved, approved_by = 1, None
    ob.approveThis(approved, approved_by)

    #extra settings
    ob.update_data(_file)
    ob.submitThis()
    if ob.discussion:
        ob.open_for_comments()
    else:
        ob.close_for_comments()
    self.recatalogNyObject(ob)

    #redirect if case
    if REQUEST is not None:
        REQUEST.RESPONSE.redirect(self.absolute_url())

    return ob.getId()