Beispiel #1
0
class NeedEditForm(BaseForm):
    id = "NeedEdit"
    label = ""
    fields = NeedCreateForm.fields

    @classmethod
    def on_success(cls, request, values):
        _ = request._
        need = request.context.need
        round = request.context.round
        values['token'] = need.token

        advisor = unpack_advisor(request, values.pop('advisor', {}))
        newNeed = not need.added
        if newNeed:
            AddNeedToRound(request, {
                'Round': {
                    'token': round.token,
                    'Needs': [{
                        'token': need.token
                    }]
                }
            })

        try:
            round = EditNeedProc(request, {'Needs': [values]})
        except DBNotification, e:
            if e.message == 'Need_Already_Exists':
                return {
                    'success': False,
                    'errors': {
                        'name':
                        _("TaskSetup.ErrorMessage.This task already exists, if you intend to Edit this task, please change its name to something less ambiguous!"
                          )
                    }
                }
            else:
                raise e

        if advisor: invite_advisor_to_need(request, need, advisor)

        if newNeed:
            request.session.flash(
                GenericSuccessMessage(
                    _("TaskSetup.SuccessMessage.Task added to round!")),
                "generic_messages")
            return {
                'success': True,
                'redirect': request.resource_url(request.context.__parent__)
            }
        else:
            request.session.flash(
                GenericSuccessMessage(
                    _("TaskSetup.SuccessMessage.Changes saved!")),
                "generic_messages")
            return {
                'success': True,
                'redirect': request.resource_url(request.context)
            }
Beispiel #2
0
class PageCreateForm(BaseForm):
    label = "Create Page"
    fields = [
        StringField('url', "URL", REQUIRED),
        StringField('title', "title", REQUIRED),
        CheckboxPostField('active', "Enabled"),
        StringField('metaKeywords', "Meta Keywords"),
        StringField('metaDescription', "Meta Description"),
        TextareaField('content', "Content", input_classes='x-high')
    ]

    @classmethod
    def on_success(cls, request, values):
        values['Need'] = [{'name': n} for n in values.pop('Need', [])]
        try:
            need = AdminPageCreateProc(request, values)
        except DBNotification, e:
            if e.message in ('Page_Already_Exists', 'Url already exists'):
                return {
                    'success': False,
                    'errors': {
                        'url':
                        "This Page already exists, please change the url."
                    }
                }
            else:
                raise e
        request.session.flash(
            GenericSuccessMessage("Page created successfully!"),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #3
0
class ServiceCreateForm(BaseForm):
    label = "Create Service"
    fields = [
        StringField('name', "Name", REQUIRED),
        URLField('url', "Website", REQUIRED),
        PictureUploadField("logo", "Logo", picWidth=100, picHeight=100)
    ]

    @classmethod
    def on_success(cls, request, values):
        try:
            need = AdminServiceCreateProc(request, values)
        except DBNotification, e:
            if e.message == 'Service_Already_Exists':
                return {
                    'success': False,
                    'errors': {
                        'name':
                        "This service already exists, please change the name to a unique name."
                    }
                }
            else:
                raise e
        request.session.flash(
            GenericSuccessMessage("Service created successfully!"),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #4
0
    def on_success(cls, request, values):
        _ = request._
        user = request.root.user
        company = request.context.company
        need = request.context.need

        params = {
            'name': values['name'],
            'email': values['email'],
            'invitorToken': user.token,
            'invitorName': user.name,
            'companySlug': company.slug,
            'companyName': company.name,
            'Need': {
                "slug": need.slug,
                "name": need.name
            }
        }

        RecommendNeedProc(request, {'Invite': params})
        request.session.flash(
            GenericSuccessMessage(
                _(u"TaskDetailsPage.Message:You successfully recommended this task to {name}!"
                  ).format(**values)), "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #5
0
def add_top_mentor(context, request):
    mentorToken = request.params.get('m')
    mentor = GetProfileProc(request, {'token': mentorToken})
    if not mentor:
        request.session.flash(GenericErrorMessage("Not a valid mentor!"),
                              "generic_messages")
        raise HTTPFound(request.resource_url(request.context, 'mentor'))

    user = request.root.user
    company = request.context.company

    values = {
        'invitorToken': user.token,
        'invitorName': user.name,
        'companySlug': company.slug,
        'userToken': mentorToken,
        'role': 'MENTOR',
        'email': mentor.email,
        'name': mentor.name
    }
    InviteToCompanyProc(request, {'Invite': [values]})

    request.session.flash(
        GenericSuccessMessage(
            u"You successfully invited {name} to your company!".format(
                **values)), "generic_messages")
    raise HTTPFound(request.resource_url(request.context))
Beispiel #6
0
 def on_success(cls, request, values):
     values['name'] = request.context.service.name
     need = AdminServiceEditProc(request, values)
     request.session.flash(
         GenericSuccessMessage("Service updated successfully!"),
         "generic_messages")
     return {
         'success': True,
         'redirect': request.resource_url(request.context.__parent__)
     }
Beispiel #7
0
 def on_success(cls, request, values):
     values['key'] = request.context.__name__
     values['Need'] = [{'name': n} for n in values.pop('Need', [])]
     need = AdminPageEditProc(request, values)
     request.session.flash(
         GenericSuccessMessage("Page updated successfully!"),
         "generic_messages")
     return {
         'success': True,
         'redirect': request.resource_url(request.context)
     }
Beispiel #8
0
 def on_success(cls, request, values):
     values['key'] = request.context.__name__
     needs = values.pop('Need', [])
     if not isinstance(needs, list): needs = [needs]
     values['Need'] = [{'name': n} for n in needs]
     need = AdminTemplatesEditProc(request, values)
     request.session.flash(
         GenericSuccessMessage("Template updated successfully!"),
         "generic_messages")
     return {
         'success': True,
         'redirect': request.resource_url(request.context.__parent__)
     }
Beispiel #9
0
 def on_success(cls, request, values):
     _ = request._
     need = request.context.need
     advisor = unpack_advisor(request, values)
     invite_advisor_to_need(request, need, advisor)
     request.session.flash(
         GenericSuccessMessage(
             _(u"TaskDetailsPage.Message:You successfully invited {name} to advise you with this task!"
               ).format(**values)), "generic_messages")
     return {
         'success': True,
         'redirect': request.resource_url(request.context)
     }
Beispiel #10
0
        def on_success(cls, request, values):
            data = request.context.contentsMap
            data.update({v['key']: v['value'] for v in values['values']})

            contents = SetStaticContentProc(
                request,
                {'Static': [{
                    'key': k,
                    'value': v
                } for k, v in data.items()]})
            request._.refresh(request)

            request.session.flash(
                GenericSuccessMessage("Content created successfully!"),
                "generic_messages")
            return {'success': True, 'redirect': fwd_url(request)}
Beispiel #11
0
    def delete_view_inner(context, request):
        data = request.context.contentsMap
        data.pop(request.context.content.key, None)

        contents = SetStaticContentProc(
            request,
            {'Static': [{
                'key': k,
                'value': v
            } for k, v in data.items()]})
        request._.refresh(request)

        request.session.flash(
            GenericSuccessMessage("Content updated successfully!"),
            "generic_messages")
        request.fwd_raw(fwd_url(request))
Beispiel #12
0
class TaskEditForm(TaskCreateForm):
    label = "Edit Task"

    @classmethod
    def on_success(cls, request, values):
        values['key'] = request.context.task.key
        try:
            need = AdminNeedEditProc(request, values)
        except (DBNotification, DBException), e:
            return {'success': False, 'message': e.message}
        request.session.flash(
            GenericSuccessMessage("Task updated successfully!"),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context.__parent__)
        }
Beispiel #13
0
    def on_success(cls, request, values):
        user = request.root.user
        company = request.context.company

        values['invitorToken'] = user.token
        values['invitorName'] = user.name
        values['companySlug'] = company.slug

        InviteToCompanyProc(request, {'Invite': [values]})

        request.session.flash(
            GenericSuccessMessage(
                u"You successfully invited {name} to your company!".format(
                    **values)), "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #14
0
class TemplateCreateForm(BaseForm):
    label = "Create Template"
    fields = [
        BS3_NCOL(
            Sequence(
                StringField('name', "Name", REQUIRED),
                TextareaField('description',
                              "Description",
                              REQUIRED,
                              input_classes='x-high'),
                PictureUploadField("picture",
                                   "Picture",
                                   picWidth=277,
                                   picHeight=230),
                CheckboxPostField('active', "Active?")),
            NeedSelector('Need', "Task List"))
    ]

    @classmethod
    def on_success(cls, request, values):
        needs = values.pop('Need', [])
        if not isinstance(needs, list): needs = [needs]
        values['Need'] = [{'name': n} for n in needs]
        try:
            need = AdminTemplatesCreateProc(request, values)
        except DBNotification, e:
            if e.message == 'Template_Already_Exists':
                return {
                    'success': False,
                    'errors': {
                        'name':
                        "This template already exists, please change the name to a unique name."
                    }
                }
            else:
                raise e
        request.session.flash(
            GenericSuccessMessage("Template created successfully!"),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #15
0
 def on_success(cls, request, values):
     _ = request._
     ApplyForNeedProc(
         request, {
             'token': request.context.need.token,
             'Application': {
                 'User': {
                     'token': request.root.user.token
                 },
                 'message': values['message']
             }
         })
     request.session.flash(
         GenericSuccessMessage(
             _("TaskDetailsPage.Apply.Success:You have successfully applied for this task. One of the team members will contact you shortly."
               )), "generic_messages")
     return {
         'success': True,
         'redirect': request.resource_url(request.context)
     }
Beispiel #16
0
class NeedCreateForm(BaseForm):
    id = "NeedCreate"
    label = ""
    fields = [
        PictureUploadField("picture",
                           _("TaskSetup.FormLabel.Picture"),
                           group_classes='file-upload-control'),
        TypeAheadField('name',
                       _("TaskSetup.FormLabel.Title"),
                       '/web/need/name',
                       'Needs',
                       attrs=REQUIRED,
                       js_module="views/company/need_switch",
                       api_allow_new=True),
        CheckboxPostField('parttime', _("TaskSetup.FormLabel.is part time")),
        CurrencyIntField(
            'cash',
            _("TaskSetup.FormLabel.Cash Value"),
            HtmlAttrs(
                required=True,
                data_control_help=_("TaskSetup.FormLabel.Cash Value.Help")),
            input_classes='data-input cash',
            maxlength=8),
        CurrencyIntField(
            'equity',
            _("TaskSetup.FormLabel.Equity Value"),
            HtmlAttrs(
                required=True,
                data_control_help=_("TaskSetup.FormLabel.Equity Value.Help")),
            input_classes='data-input equity',
            maxlength=8),
        SanitizedHtmlField("customText",
                           _("TaskSetup.FormLabel.Description"),
                           REQUIRED,
                           input_classes='x-high'),
        TagSearchField("Tags",
                       _("TaskSetup.FormLabel.Related Tags"),
                       '/web/tag/search',
                       'Tags',
                       attrs=HtmlAttrs(required=True,
                                       data_required_min=3,
                                       placeholder="Add Tags")),
        ServiceSearchField("Services",
                           _("TaskSetup.FormLabel.Related Services"),
                           '/web/service/search',
                           'Services',
                           attrs=HtmlAttrs(placeholder="Add Services")),
        StringField("advisor.name",
                    _("TaskSetup.FormLabel.Advisor.Name"),
                    input_classes="ignore"),
        EmailField("advisor.email",
                   _("TaskSetup.FormLabel.Advisor.EmailAddress"),
                   input_classes="ignore")
    ]

    @classmethod
    def on_success(cls, request, values):
        _ = request._

        try:
            advisor = unpack_advisor(request, values.pop('advisor', {}))
            need = CreateNeedProc(request, {
                'Needs': [values],
                'token': request.context.round.token
            })
        except DBNotification, e:
            if e.message == 'Need_Already_Exists':
                return {
                    'success': False,
                    'errors': {
                        'name':
                        _("TaskSetup.ErrorMessage.This task already exists, if you intend to create this task, please change its name to something less ambiguous!"
                          )
                    }
                }
            else:
                raise e

        if advisor: invite_advisor_to_need(request, need, advisor)

        request.session.flash(
            GenericSuccessMessage(
                _("TaskSetup.SuccessMessage.Task created successfully!")),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }
Beispiel #17
0
            need = AdminNeedCreateProc(request, values)
        except DBNotification, e:
            if e.message == 'Need_Already_Exists':
                return {
                    'success': False,
                    'errors': {
                        'name':
                        "This task already exists, please change the name to a unique name."
                    }
                }
            else:
                return {'success': False, 'message': e.message}
        except DBException, e:
            return {'success': False, 'message': e.message}
        request.session.flash(
            GenericSuccessMessage("Task created successfully!"),
            "generic_messages")
        return {
            'success': True,
            'redirect': request.resource_url(request.context)
        }


class TaskCreateHandler(FormHandler):
    form = TaskCreateForm


class TaskEditForm(TaskCreateForm):
    label = "Edit Task"

    @classmethod
Beispiel #18
0
        values = variable_decode(self.request.params)
        schema_id = values.get('type')
        if not schema_id: raise HTTPNotImplemented()
        try:
            resp = self.validate_values(values)
        except Invalid, error:
            log.error(error.error_dict)
            self.result['values'][schema_id] = error.value or {}
            self.result['errors'][schema_id] = error.error_dict or {}
            self.request.response.status_int = 401
        else:
            ### if validate_values/on_success returns anything else than a redirect, it must be some validation error
            if resp.get('message'):
                if resp.get('success') == True:
                    self.request.session.flash(
                        GenericSuccessMessage(resp.get('message')),
                        'generic_messages')
                elif resp.get('success') == False:
                    self.request.session.flash(
                        GenericErrorMessage(resp.get('message')),
                        'generic_messages')
            if resp.get('redirect'):
                # cannot be redirect exception inside an exception view
                return redirect_response(resp.get('redirect'))

            self.result['values'][schema_id] = resp.get('values', values)
            self.result['errors'][schema_id] = resp.get('errors', {})
            self.request.response.status_int = 401
        self.result = self.add_globals(self.request, self.result)
        return self.result
Beispiel #19
0
def accept_application(context, request):
    ApproveApplicationProc(request, {'token': context.application.token})
    request.session.flash(
        GenericSuccessMessage("The application has been accepted!"),
        "generic_messages")
    raise HTTPFound(request.resource_url(context.__parent__))