Exemple #1
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        ordering = getattr(context, 'ordering', None)
        if ordering is not None:
            ordering.sync(context.keys())

        creator = authenticated_userid(request)
        reference_object = create_content(
            self.content_iface,
            converted['title'],
            converted['description'],
            creator,
        )
        name = make_unique_name(context, converted['title'])
        context[name] = reference_object

        if ordering is not None:
            ordering.add(name)

        # save the tags
        set_tags(reference_object, request, converted['tags'])

        location = resource_url(reference_object, request)
        return HTTPFound(location=location)
Exemple #2
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if 'security_state' in converted:
            if workflow is not None:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # Tags and attachments
        set_tags(context, request, converted['tags'])
        creator = authenticated_userid(request)
        attachments_folder = context['attachments']
        upload_attachments(
            filter(lambda x: x is not None, converted['attachments']),
            attachments_folder,
            creator, request)

        # modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #3
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        
        #create the news item and store it
        creator = authenticated_userid(request)
        newsitem = create_content(
            INewsItem,
            title=converted['title'],
            text=converted['text'],
            creator=creator,
            publication_date=converted['publication_date'],
            caption=converted['caption'],
            )
        name = make_unique_name(context, converted['title'])
        context[name] = newsitem

        # tags, attachments, and photos
        set_tags(newsitem, request, converted['tags'])
        attachments_folder = newsitem['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)
        handle_photo_upload(newsitem, converted)
        self.filestore.clear()

        location = model_url(newsitem, request)
        return HTTPFound(location=location)
Exemple #4
0
    def handle_submit(self, converted):
        if lock.owns_lock(self.context, self.userid):
            lock.clear(self.context)

        context = self.context
        request = self.request
        workflow = self.workflow
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.text = converted['text']
        context.description = extract_description(converted['text'])
        newtitle = converted['title']
        if newtitle != context.title:
            context.change_title(newtitle)

        # Save the tags on it
        set_tags(context, request, converted['tags'])

        # Modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request)
        msg = "?status_message=Wiki%20Page%20edited"
        return HTTPFound(location=location + msg)
Exemple #5
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))

        simple_fields = ['title', 'text', 'caption', 'publication_date']
        for field in simple_fields:
            setattr(context, field, converted[field])

        # save tags, attachments, photo
        set_tags(context, request, converted['tags'])
        userid = authenticated_userid(request)
        attachments_folder = context['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           userid, request)
        handle_photo_upload(context, converted)
        self.filestore.clear

        # mark as modified
        context.modified_by = userid
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request)
        msg = "?status_message=News%20Item%20edited"
        return HTTPFound(location=location + msg)
Exemple #6
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        # create the page and store it
        creator = authenticated_userid(request)
        page = create_content(IPage,
                              converted['title'],
                              converted['text'],
                              extract_description(converted['text']),
                              creator,
                              )
        name = make_unique_name(context, converted['title'])
        context[name] = page

        # tags and attachments
        set_tags(page, request, converted['tags'])
        attachments_folder = page['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)
        relocate_temp_images(page, request)

        # update ordering if in ordered container
        if hasattr(context, 'ordering'):
            context.ordering.add(name)

        location = resource_url(page, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #7
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        workflow = self.workflow
        wikipage = create_content(
            IWikiPage,
            converted['title'],
            converted['text'],
            extract_description(converted['text']),
            authenticated_userid(request),
            )

        name = make_name(context, converted['title'])
        context[name] = wikipage

        if workflow is not None:
            workflow.initialize(wikipage)
            if 'security_state' in converted:
                workflow.transition_to_state(wikipage,
                                             request,
                                             converted['security_state'])

        # Save the tags on it.
        set_tags(wikipage, request, converted['tags'])

        relocate_temp_images(wikipage, request)

        if converted['sendalert']:
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(wikipage, request)

        msg = '?status_message=Wiki%20Page%20created'
        location = model_url(wikipage, request) + msg
        return HTTPFound(location=location)
    def handle_submit(self, converted):
        request = self.request
        context = self.context

        #create the news item and store it
        creator = authenticated_userid(request)
        newsitem = create_content(
            INewsItem,
            title=converted['title'],
            text=converted['text'],
            creator=creator,
            publication_date=converted['publication_date'],
            caption=converted['caption'],
            )
        name = make_unique_name(context, converted['title'])
        context[name] = newsitem
        relocate_temp_images(newsitem, request)

        # tags, attachments, and photos
        set_tags(newsitem, request, converted['tags'])
        attachments_folder = newsitem['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)
        try:
            handle_photo_upload(newsitem, converted)
        except Invalid, e:
            raise ValidationError(**e.error_dict)
Exemple #9
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        name = make_unique_name(context, converted['title'])
        creator = authenticated_userid(request)

        topic = create_content(IForumTopic,
            converted['title'],
            converted['text'],
            creator,
            )

        topic.description = extract_description(converted['text'])
        context[name] = topic

        # Set up workflow
        if workflow is not None:
            workflow.initialize(topic)
            if 'security_state' in converted:
                workflow.transition_to_state(topic, request,
                                             converted['security_state'])

        # send the temp images to their final place
        relocate_temp_images(topic, request)

        # Tags and attachments
        set_tags(topic, request, converted['tags'])
        if support_attachments(topic):
            upload_attachments(converted['attachments'], topic['attachments'],
                               creator, request)

        location = resource_url(topic, request)
        return HTTPFound(location=location)
Exemple #10
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        name = make_unique_name(context, converted['title'])
        creator = authenticated_userid(request)

        topic = create_content(IForumTopic,
            converted['title'],
            converted['text'],
            creator,
            )

        topic.description = extract_description(converted['text'])
        context[name] = topic

        # Set up workflow
        if workflow is not None:
            workflow.initialize(topic)
            if 'security_state' in converted:
                workflow.transition_to_state(topic, request,
                                             converted['security_state'])

        # Tags and attachments
        set_tags(context, request, converted['tags'])
        if support_attachments(topic):
            upload_attachments(converted['attachments'], topic['attachments'],
                               creator, request)

        location = model_url(topic, request)
        return HTTPFound(location=location)
Exemple #11
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # Save the tags on it
        set_tags(context, request, converted['tags'])

        # Save new attachments
        creator = authenticated_userid(request)
        if support_attachments(context):
            upload_attachments(converted['attachments'], context['attachments'],
                               creator, request)

        # Modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request,
                             query={'status_message':'Forum Topic Edited'})
        return HTTPFound(location=location)
Exemple #12
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        # create the page and store it
        creator = authenticated_userid(request)
        page = create_content(
            IPage,
            converted['title'],
            converted['text'],
            extract_description(converted['text']),
            creator,
        )
        name = make_unique_name(context, converted['title'])
        context[name] = page

        # tags and attachments
        set_tags(page, request, converted['tags'])
        attachments_folder = page['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)
        relocate_temp_images(page, request)

        # update ordering if in ordered container
        if hasattr(context, 'ordering'):
            context.ordering.add(name)

        location = resource_url(page, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #13
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.text = converted['text']
        context.description = extract_description(converted['text'])
        newtitle = converted['title']
        if newtitle != context.title:
            context.change_title(newtitle)

        # Save the tags on it
        set_tags(context, request, converted['tags'])

        # Modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = model_url(context, request)
        msg = "?status_message=Wiki%20Page%20edited"
        return HTTPFound(location=location+msg)
Exemple #14
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        userid = authenticated_userid(request)
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # tags and attachments
        set_tags(context, request, converted['tags'])
        creator = userid
        attachments_folder = context['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)

        # modified
        context.modified_by = userid
        objectEventNotify(ObjectModifiedEvent(context))

        self.filestore.clear()
        location = resource_url(context, request)
        msg = "?status_message=Page%20edited"
        return HTTPFound(location=location+msg)
Exemple #15
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if 'security_state' in converted:
            if workflow is not None:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # Tags and attachments
        set_tags(context, request, converted['tags'])
        creator = authenticated_userid(request)
        attachments_folder = context['attachments']
        upload_attachments(
            filter(lambda x: x is not None, converted['attachments']),
            attachments_folder, creator, request)

        # modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #16
0
def add_referencemanual_view(context, request):
    tags_list=request.POST.getall('tags')
    form = AddReferenceManualForm(tags_list=tags_list)

    if 'form.cancel' in request.POST:
        return HTTPFound(location=model_url(context, request))

    if 'form.submitted' in request.POST:
        try:
            converted = form.validate(request.POST)
            # Create the reference manual and store it
            creator = authenticated_userid(request)
            reference_manual = create_content(IReferenceManual,
                                              converted['title'],
                                              converted['description'],
                                              creator,
                                              )
            name = make_unique_name(context, converted['title'])
            context[name] = reference_manual

            # Save the tags on it.
            set_tags(reference_manual, request, converted['tags'])

            location = model_url(reference_manual, request)
            return HTTPFound(location=location)

        except Invalid, e:
            fielderrors = e.error_dict
            fill_values = form.convert(request.POST)
            tags_field = dict(
                records = [dict(tag=t) for t in request.POST.getall('tags')]
                )
Exemple #17
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context

        #create the news item and store it
        creator = authenticated_userid(request)
        newsitem = create_content(
            INewsItem,
            title=converted['title'],
            text=converted['text'],
            creator=creator,
            publication_date=converted['publication_date'],
            caption=converted['caption'],
        )
        name = make_unique_name(context, converted['title'])
        context[name] = newsitem

        # tags, attachments, and photos
        set_tags(newsitem, request, converted['tags'])
        attachments_folder = newsitem['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)
        try:
            handle_photo_upload(newsitem, converted)
        except Invalid, e:
            raise ValidationError(**e.error_dict)
Exemple #18
0
def edit_referencesection_view(context, request):

    tags_list = request.POST.getall('tags')
    form = EditReferenceSectionForm(tags_list=tags_list)

    if 'form.cancel' in request.POST:
        return HTTPFound(location=model_url(context, request))

    if 'form.submitted' in request.POST:
        try:
            converted = form.validate(request.POST)
            # *will be* modified event
            objectEventNotify(ObjectWillBeModifiedEvent(context))

            context.title = converted['title']
            context.description = converted['description']

            # Save the tags on it
            set_tags(context, request, converted['tags'])

            # Modified
            context.modified_by = authenticated_userid(request)
            objectEventNotify(ObjectModifiedEvent(context))

            location = model_url(context, request)
            msg = "?status_message=Reference%20section%20edited"
            return HTTPFound(location=location+msg)

        except Invalid, e:
            fielderrors = e.error_dict
            fill_values = form.convert(request.POST)
Exemple #19
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        workflow = self.workflow
        wikipage = create_content(
            IWikiPage,
            converted['title'],
            converted['text'],
            extract_description(converted['text']),
            authenticated_userid(request),
        )

        name = make_name(context, converted['title'])
        context[name] = wikipage

        if workflow is not None:
            workflow.initialize(wikipage)
            if 'security_state' in converted:
                workflow.transition_to_state(wikipage, request,
                                             converted['security_state'])

        # Save the tags on it.
        set_tags(wikipage, request, converted['tags'])

        relocate_temp_images(wikipage, request)

        if converted['sendalert']:
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(wikipage, request)

        msg = '?status_message=Wiki%20Page%20created'
        location = resource_url(wikipage, request) + msg
        return HTTPFound(location=location)
Exemple #20
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        userid = authenticated_userid(request)
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # tags and attachments
        set_tags(context, request, converted['tags'])
        creator = userid
        attachments_folder = context['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           creator, request)

        # modified
        context.modified_by = userid
        objectEventNotify(ObjectModifiedEvent(context))

        self.filestore.clear()
        location = resource_url(context, request)
        msg = "?status_message=Page%20edited"
        return HTTPFound(location=location + msg)
    def handle_submit(self, converted):
        request = self.request
        context = self.context

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))

        simple_fields = ['title', 'text', 'caption', 'publication_date']
        for field in simple_fields:
            setattr(context, field, converted[field])

        # save tags, attachments, photo
        set_tags(context, request, converted['tags'])
        userid = authenticated_userid(request)
        attachments_folder = context['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           userid, request)
        handle_photo_upload(context, converted)
        self.filestore.clear

        # mark as modified
        context.modified_by = userid
        objectEventNotify(ObjectModifiedEvent(context))

        location = resource_url(context, request)
        msg = "?status_message=News%20Item%20edited"
        return HTTPFound(location=location+msg)
Exemple #22
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']
        context.text = converted['text']
        context.description = extract_description(converted['text'])

        # Save the tags on it
        set_tags(context, request, converted['tags'])

        # Save new attachments
        creator = authenticated_userid(request)
        if support_attachments(context):
            upload_attachments(converted['attachments'], context['attachments'],
                               creator, request)

        # Modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = model_url(context, request,
                             query={'status_message':'Forum Topic Edited'})
        return HTTPFound(location=location)
Exemple #23
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        name = make_unique_name(context, converted['title'])
        creator = authenticated_userid(request)

        folder = create_content(ICommunityFolder,
                                converted['title'],
                                creator,
                                )
        context[name] = folder
        if workflow is not None:
            workflow.initialize(folder)
            if 'security_state' in converted:
                workflow.transition_to_state(folder, request,
                                             converted['security_state'])

        # Tags, attachments, alerts
        set_tags(folder, request, converted['tags'])

        # Make changes post-creation based on policy in src/osi
        customizer = queryMultiAdapter((folder, request), IFolderCustomizer)
        if customizer:
            for interface in customizer.markers:
                alsoProvides(folder, interface)

        location = model_url(folder, request)
        return HTTPFound(location=location)
Exemple #24
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        name = make_name(context, converted['title'])
        userid = authenticated_userid(request)
        community = create_content(
            ICommunity,
            converted['title'],
            converted['description'],
            converted['text'],
            userid,
        )
        community.sendalert_default = converted.get('sendalert_default', True)
        # this *must* directly follow content creation because the
        # toolinfo add stuff depends on the community having a full
        # path.
        context[name] = community

        # required to use moderators_group_name and
        # members_group_name
        community.__name__ = name
        tools_present = []
        for toolinfo in self.available_tools:
            if toolinfo['name'] in converted.get('tools', []):
                toolinfo['component'].add(community, request)
                tools_present.append(toolinfo['name'])

        # Set the default tool
        if converted.get('default_tool') in tools_present:
            community.default_tool = converted['default_tool']
        else:
            community.default_tool = None

        users = find_users(context)
        moderators_group_name = community.moderators_group_name
        members_group_name = community.members_group_name

        for group_name in moderators_group_name, members_group_name:
            users.add_group(userid, group_name)

        if self.workflow is not None:
            if 'security_state' in converted:
                self.workflow.transition_to_state(community, request,
                                                  converted['security_state'])
        # Save the tags on it.
        set_tags(community, request, converted['tags'])
        # Adding a community should take you to the Add Existing
        # User screen, so the moderator can include some users.
        location = resource_url(community,
                                request,
                                'members',
                                'add_existing.html',
                                query={'status_message': 'Community added'})
        return HTTPFound(location=location)
Exemple #25
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        name = make_name(context, converted['title'])
        userid = authenticated_userid(request)
        community = create_content(ICommunity,
                                   converted['title'],
                                   converted['description'],
                                   converted['text'],
                                   userid,
                                   )
        community.sendalert_default = converted.get('sendalert_default', True)
        # this *must* directly follow content creation because the
        # toolinfo add stuff depends on the community having a full
        # path.
        context[name] = community

        # required to use moderators_group_name and
        # members_group_name
        community.__name__ = name
        tools_present = []
        for toolinfo in self.available_tools:
            if toolinfo['name'] in converted.get('tools', []):
                toolinfo['component'].add(community, request)
                tools_present.append(toolinfo['name'])

        # Set the default tool
        if converted.get('default_tool') in tools_present:
            community.default_tool = converted['default_tool']
        else:
            community.default_tool = None

        users = find_users(context)
        moderators_group_name = community.moderators_group_name
        members_group_name = community.members_group_name

        for group_name in moderators_group_name, members_group_name:
            users.add_group(userid, group_name)

        if self.workflow is not None:
            if 'security_state' in converted:
                self.workflow.transition_to_state(community, request,
                                                  converted['security_state'])
        # Save the tags on it.
        set_tags(community, request, converted['tags'])
        # Adding a community should take you to the Add Existing
        # User screen, so the moderator can include some users.
        location = resource_url(
            community, request,
            'members', 'add_existing.html',
            query={'status_message': 'Community added'})
        return HTTPFound(location=location)
Exemple #26
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        workflow = self.workflow

        creator = authenticated_userid(request)

        f = converted['file']

        if not f.file:
            raise ValidationError(file='Must upload a file')

        file = create_content(ICommunityFile,
                              title=converted['title'],
                              stream=f.file,
                              mimetype=get_mimetype(f.mimetype, f.filename),
                              filename=f.filename,
                              creator=creator,
                              )
        self.check_upload_size(context, file, 'file')

        # For file objects, OSI's policy is to store the upload file's
        # filename as the objectid, instead of basing __name__ on the
        # title field).
        filename = basename_of_filepath(f.filename)
        file.filename = filename
        name = make_name(context, filename, raise_error=False)
        if not name:
            msg = 'The filename must not be empty'
            raise ValidationError(file=msg)
        # Is there a key in context with that filename?
        if name in context:
            msg = 'Filename %s already exists in this folder' % filename
            raise ValidationError(file=msg)
        context[name] = file

        if workflow is not None:
            workflow.initialize(file)
            if 'security_state' in converted:
                workflow.transition_to_state(file, request,
                                             converted['security_state'])

        # Tags, attachments, alerts
        set_tags(file, request, converted['tags'])
        if converted.get('sendalert'):
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(file, request)

        self.filestore.clear()
        location = model_url(file, request)
        return HTTPFound(location=location)
Exemple #27
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))

        context.title = converted['title']
        context.description = converted['description']
        # save the tags
        set_tags(context, request, converted['tags'])

        # modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))
        location = resource_url(context, request)
        msg = "?status_message=%s" % self.success_msg
        return HTTPFound(location='%s%s' % (location, msg))
Exemple #28
0
    def handle_submit(self, converted):
        # base class does some validation and simple massaging
        super(AddCalendarEventFormController, self).handle_submit(converted)

        # we create the event and handle other details
        context = self.context
        request = self.request
        creator = authenticated_userid(request)
        attendees = converted.get('attendees') or []
        calendar_event = create_content(ICalendarEvent,
                                        converted['title'],
                                        converted['start_date'],
                                        converted['end_date'],
                                        creator,
                                        converted['text'],
                                        converted['location'],
                                        attendees,
                                        converted['contact_name'],
                                        converted['contact_email'],
                                        calendar_category=converted['category'],
                                        )
        calendar_event.description = extract_description(converted['text'])
        calname = make_unique_name(context, calendar_event.title)
        context[calname] = calendar_event

        # set up workflow
        workflow = get_workflow(ICalendarEvent, 'security', context)
        if workflow is not None:
            workflow.initialize(calendar_event)
            if 'security_state' in converted:
                workflow.transition_to_state(calendar_event, request,
                                             converted['security_state'])

        # save tags and attachments
        set_tags(calendar_event, request, converted['tags'])
        upload_attachments(converted['attachments'],
                           calendar_event['attachments'],
                           creator, request)

        # send alert
        if converted.get('sendalert', False):
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(calendar_event, request)

        self.filestore.clear()
        return HTTPFound(location=model_url(calendar_event, request))
Exemple #29
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow
        name = make_unique_name(context, converted['title'])

        creator = authenticated_userid(request)

        blogentry = create_content(
            IBlogEntry,
            converted['title'],
            converted['text'],
            extract_description(converted['text']),
            creator,
            )

        context[name] = blogentry

        # Set up workflow
        if workflow is not None:
            workflow.initialize(blogentry)
            if 'security_state' in converted:
                workflow.transition_to_state(blogentry, request,
                                             converted['security_state'])

        # Tags, attachments, alerts, images
        set_tags(blogentry, request, converted['tags'])
        attachments_folder = blogentry['attachments']
        upload_attachments(filter(lambda x: x is not None,
                                  converted['attachments']),
                           attachments_folder,
                           creator, request)
        relocate_temp_images(blogentry, request)

        if converted['sendalert']:
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(blogentry, request)

        location = resource_url(blogentry, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #30
0
def add_referencesection_view(context, request):

    tags_list=request.POST.getall('tags')
    form = AddReferenceSectionForm(tags_list = tags_list)

    if 'form.cancel' in request.POST:
        return HTTPFound(location=model_url(context, request))

    if 'form.submitted' in request.POST:
        try:
            converted = form.validate(request.POST)

            # Be a chicken and sync the ordering every time before
            # adding something, just to make sure nothing gets lost.
            context.ordering.sync(context.keys())

            # Create the reference section and store it
            creator = authenticated_userid(request)
            reference_section = create_content(IReferenceSection,
                                               converted['title'],
                                               converted['description'],
                                               creator,
                                               )
            name = make_unique_name(context, converted['title'])
            context[name] = reference_section

            # Save the tags on it.
            set_tags(reference_section, request, converted['tags'])

            # Update the ordering
            context.ordering.add(name)

            location = model_url(reference_section, request)
            return HTTPFound(location=location)

        except Invalid, e:
            fielderrors = e.error_dict
            fill_values = form.convert(request.POST)
            tags_field = dict(
                records = [dict(tag=t) for t in request.POST.getall('tags')]
                )
Exemple #31
0
    def handle_submit(self, converted):
        # base class does some validation and simple massaging
        super(EditCalendarEventFormController, self).handle_submit(converted)

        context = self.context
        request = self.request
        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if self.workflow is not None:
            if 'security_state' in converted:
                self.workflow.transition_to_state(context, request,
                                                  converted['security_state'])

        context.title = converted['title']
        context.startDate = converted['start_date']
        context.endDate = converted['end_date']
        context.text = converted['text']
        context.location = converted['location']
        context.attendees = converted.get('attendees') or []
        context.contact_name = converted['contact_name']
        context.contact_email = converted['contact_email']
        context.calendar_category = converted['category']
        context.description = extract_description(converted['text'])

        # Save the tags on it
        set_tags(context, request, converted['tags'])

        # Save new attachments
        userid = authenticated_userid(request)
        attachments_folder = context['attachments']
        upload_attachments(converted['attachments'], attachments_folder,
                           userid, request)

        # Modified
        context.modified_by = userid
        objectEventNotify(ObjectModifiedEvent(context))

        self.filestore.clear()
        location = model_url(context, request)
        msg = "?status_message=Calendar%20Event%20edited"
        return HTTPFound(location='%s%s' % (location, msg))
Exemple #32
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow
        name = make_unique_name(context, converted['title'])

        creator = authenticated_userid(request)

        blogentry = create_content(
            IBlogEntry,
            converted['title'],
            converted['text'],
            extract_description(converted['text']),
            creator,
        )

        context[name] = blogentry

        # Set up workflow
        if workflow is not None:
            workflow.initialize(blogentry)
            if 'security_state' in converted:
                workflow.transition_to_state(blogentry, request,
                                             converted['security_state'])

        # Tags, attachments, alerts, images
        set_tags(blogentry, request, converted['tags'])
        attachments_folder = blogentry['attachments']
        upload_attachments(
            filter(lambda x: x is not None, converted['attachments']),
            attachments_folder, creator, request)
        relocate_temp_images(blogentry, request)

        if converted['sendalert']:
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(blogentry, request)

        location = resource_url(blogentry, request)
        self.filestore.clear()
        return HTTPFound(location=location)
Exemple #33
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        name = make_unique_name(context, converted['title'])
        creator = authenticated_userid(request)

        topic = create_content(
            IForumTopic,
            converted['title'],
            converted['text'],
            creator,
            )

        topic.description = extract_description(converted['text'])
        context[name] = topic

        # Set up workflow
        if workflow is not None:
            workflow.initialize(topic)
            if 'security_state' in converted:
                workflow.transition_to_state(topic, request,
                                             converted['security_state'])

        # send the temp images to their final place
        relocate_temp_images(topic, request)

        # Tags and attachments
        set_tags(topic, request, converted['tags'])
        if support_attachments(topic):
            upload_attachments(converted['attachments'], topic['attachments'],
                               creator, request)

        if 'sendalert' in converted and converted['sendalert']:
            alerts = queryUtility(IAlerts, default=Alerts())
            alerts.emit(topic, request)
        location = resource_url(topic, request)
        return HTTPFound(location=location)
Exemple #34
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']

        f = converted['file']

        if f.filename:
            context.upload(f.file)
            context.mimetype = get_mimetype(f.mimetype, f.filename)
            context.filename = f.filename
            check_upload_size(context, context, 'file')
        else:
            meta = f.metadata
            if meta.get('remove'):
                raise ValidationError(file='Must supply a file')

        # Tags, attachments, alerts
        set_tags(context, request, converted['tags'])

        # modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        self.filestore.clear()
        location = model_url(context, request,
                             query={'status_message':'File changed'})
        return HTTPFound(location=location)
Exemple #35
0
    def handle_submit(self, converted):
        request = self.request
        context = self.context
        ordering = getattr(context, 'ordering', None)
        if ordering is not None:
            ordering.sync(context.keys())

        creator = authenticated_userid(request)
        reference_object = create_content(self.content_iface,
                                          converted['title'],
                                          converted['description'],
                                          creator,
                                          )
        name = make_unique_name(context, converted['title'])
        context[name] = reference_object

        if ordering is not None:
            ordering.add(name)

        # save the tags
        set_tags(reference_object, request, converted['tags'])

        location = resource_url(reference_object, request)
        return HTTPFound(location=location)
Exemple #36
0
    def handle_submit(self, converted):
        context = self.context
        request = self.request
        workflow = self.workflow

        # *will be* modified event
        objectEventNotify(ObjectWillBeModifiedEvent(context))
        if workflow is not None:
            if 'security_state' in converted:
                workflow.transition_to_state(context, request,
                                             converted['security_state'])

        context.title = converted['title']

        # Tags, attachments, alerts
        set_tags(context, request, converted['tags'])

        # modified
        context.modified_by = authenticated_userid(request)
        objectEventNotify(ObjectModifiedEvent(context))

        location = model_url(context, request, query=
                             {'status_message':'Folder changed'})
        return HTTPFound(location=location)
Exemple #37
0
def add_calendarevent_view(context, request):

    tags_list=request.POST.getall('tags')
    form = AddCalendarEventForm(tags_list=tags_list)
    workflow = get_workflow(ICalendarEvent, 'security', context)

    if workflow is None:
        security_states = []
    else:
        security_states = get_security_states(workflow, None, request)

    if security_states:
        form.add_field('security_state', security_state_field)

    if 'form.cancel' in request.POST:
        return HTTPFound(location=model_url(context, request))

    if 'form.submitted' in request.POST:
        try:
            if 'calendar_category' not in request.POST:
                # FormEncode doesn't let us mark certain keys as being missable
                # Either any key can be missing from form or none, so we just
                # manually massage calendar_category, which may be missing,
                # before performing validation.
                request.POST['calendar_category'] = None

            converted = form.validate(request.POST)

            creator = authenticated_userid(request)
            if converted['contact_email'] is None:
                # Couldn't convince the email validator to call
                # _to_python
                converted['contact_email'] = u''
            calendarevent = create_content(ICalendarEvent,
                                           converted['title'],
                                           converted['startDate'],
                                           converted['endDate'],
                                           creator,
                                           converted['text'],
                                           converted['location'],
                                           converted['attendees'],
                                           converted['contact_name'],
                                           converted['contact_email'],
                                           calendar_category=
                                            converted['calendar_category'],
                                           )
            calendarevent.description = extract_description(converted['text'])

            calname = make_unique_name(context, calendarevent.title)
            context[calname] = calendarevent

            # Set up workflow
            if workflow is not None:
                workflow.initialize(calendarevent)
                if 'security_state' in converted:
                    workflow.transition_to_state(calendarevent, request,
                                                 converted['security_state'])

            # Save the tags on it.
            set_tags(calendarevent, request, converted['tags'])
            store_attachments(calendarevent['attachments'],
                              request.params, creator)

            if converted['sendalert']:
                alerts = queryUtility(IAlerts, default=Alerts())
                alerts.emit(calendarevent, request)

            location = model_url(calendarevent, request)
            return HTTPFound(location=location)

        except Invalid, e:
            fielderrors = e.error_dict
            fill_values = form.convert(request.POST)
            tags_field = dict(
                records = [dict(tag=t) for t in request.POST.getall('tags')]
                )
Exemple #38
0
def edit_calendarevent_view(context, request):

    tags_list = request.POST.getall('tags')
    form = EditCalendarEventForm(tags_list=tags_list)
    workflow = get_workflow(ICalendarEvent, 'security', context)

    if workflow is None:
        security_states = []
    else:
        security_states = get_security_states(workflow, context, request)

    if security_states:
        form.add_field('security_state', security_state_field)

    if 'form.cancel' in request.POST:
        return HTTPFound(location=model_url(context, request))

    if 'form.submitted' in request.POST:
        try:
            if 'calendar_category' not in request.POST:
                # FormEncode doesn't let us mark certain keys as being missable
                # Either any key can be missing from form or none, so we just
                # manually massage calendar_category, which may be missing,
                # before performing validation.
                request.POST['calendar_category'] = None

            converted = form.validate(request.POST)

            # *will be* modified event
            objectEventNotify(ObjectWillBeModifiedEvent(context))
            if workflow is not None:
                if 'security_state' in converted:
                    workflow.transition_to_state(context, request,
                                                 converted['security_state'])

            context.title = converted['title']
            context.startDate = converted['startDate']
            context.endDate = converted['endDate']
            context.text = converted['text']
            context.location = converted['location']
            context.attendees = converted['attendees']
            context.contact_name = converted['contact_name']
            context.contact_email = converted['contact_email']
            context.calendar_category = converted['calendar_category']
            context.description = extract_description(converted['text'])

            # Save the tags on it
            set_tags(context, request, converted['tags'])

            # Save new attachments
            creator = authenticated_userid(request)
            store_attachments(context['attachments'], request.params, creator)

            # Modified
            context.modified_by = authenticated_userid(request)
            objectEventNotify(ObjectModifiedEvent(context))

            location = model_url(context, request)
            msg = "?status_message=Calendar%20Event%20edited"
            return HTTPFound(location=location+msg)

        except Invalid, e:
            fielderrors = e.error_dict
            fill_values = form.convert(request.POST)
Exemple #39
0
 def _callFUT(self, context, request, values):
     from karl.views.tags import set_tags
     return set_tags(context, request, values)
Exemple #40
0
 def _callFUT(self, context, request, values):
     from karl.views.tags import set_tags
     return set_tags(context, request, values)