示例#1
0
文件: views.py 项目: ecell/ecell3-ide
def send_error_report_as_email(e, tb):
    import traceback
    currentLang = get_language()
    try:
        activate_lang('en_US')
        msg = MIMEText(''.join(traceback.format_exception(e.__class__, e, tb)))
        msg['From'] = '*****@*****.**'
        msg['To'] = settings.FEEDBACK_RECIPIENT
        msg['Subject'] = _(u'E-Cell IDE Feedback Exception Report')
        conn = SMTP('localhost', 25, 'chaperone.e-cell.org')
        conn.sendmail('*****@*****.**', settings.FEEDBACK_RECIPIENT, msg.as_string())
    finally:
        activate_lang(currentLang)
示例#2
0
    def decorated_view(request, *args, **kwargs):
        user = request.user

        if user_is_anonymous(user):
            return redirect_to_login(request)

        if user.has_perms(['wagtailadmin.access_admin']):
            if hasattr(user, 'wagtail_userprofile'):
                activate_lang(
                    user.wagtail_userprofile.get_preferred_language())
            return view_func(request, *args, **kwargs)

        messages.error(request,
                       _('You do not have permission to access the admin'))
        return redirect_to_login(request)
    def decorated_view(request, *args, **kwargs):
        user = request.user

        if user.is_anonymous:
            return reject_request(request)

        if user.has_perms(['wagtailadmin.access_admin']):
            if hasattr(user, 'wagtail_userprofile'):
                activate_lang(user.wagtail_userprofile.get_preferred_language())
            return view_func(request, *args, **kwargs)

        if not request.is_ajax():
            messages.error(request, _('You do not have permission to access the admin'))

        return reject_request(request)
示例#4
0
    def decorated_view(request, *args, **kwargs):
        user = request.user

        if user_is_anonymous(user):
            return reject_request(request)

        if user.has_perms(['tuiuiuadmin.access_admin']):
            if hasattr(user, 'tuiuiu_userprofile'):
                activate_lang(user.tuiuiu_userprofile.get_preferred_language())
            return view_func(request, *args, **kwargs)

        if not request.is_ajax():
            messages.error(request,
                           _('You do not have permission to access the admin'))

        return reject_request(request)
示例#5
0
        def _generate_invoice_pdf(self, override_existing=False):
            """
            create a PDF invoice for charge
            if `override_existing` is True (default: False) - regenerate PDF
            """

            if not self.customer.subscriber.has_address:
                error_message = _(
                    'Company "{}" (ID {}) was charged but has no postal '
                    'address stored').format(self.customer.subscriber,
                                             self.customer.pk)
                logger.exception(error_message)

            context = self._get_template_context()
            context.update(dict(
                from_address=settings.INVOICE_FROM_ADDRESS,
                from_email=settings.DEFAULT_FROM_EMAIL,
            ))

            pdf_filepath = self._get_pdf_filepath()

            # check if exists
            if os.path.exists(pdf_filepath) and not override_existing:
                return pdf_filepath

            activate_lang(settings.LANGUAGE_CODE)
            template = get_template(self.customer.subscriber.invoice_template)
            try:
                pdf = utils.pdf.render_pdf(template.render(context))
            except Exception as ex:
                logger.exception(ex)
                pdf = None

            if not pdf:
                error_message = _(
                    'Invoice PDF for company "{}" (ID {}) could not be '
                    'generated.').format(self.customer.subscriber,
                                         self.customer.subscriber.pk)
                logger.exception(error_message)
                return None

            with open(pdf_filepath, 'w') as f:
                f.write(pdf)

            return pdf_filepath
示例#6
0
    def decorated_view(request, *args, **kwargs):
        user = request.user

        if user.is_anonymous:
            return reject_request(request)

        if user.has_perms(['wagtailadmin.access_admin']):
            if hasattr(user, 'wagtail_userprofile'):
                language = user.wagtail_userprofile.get_preferred_language()
                l18n.set_language(language)
                activate_lang(language)
                time_zone = user.wagtail_userprofile.get_current_time_zone()
                activate_tz(time_zone)
            return view_func(request, *args, **kwargs)

        if not request.is_ajax():
            messages.error(request,
                           _('You do not have permission to access the admin'))

        return reject_request(request)
示例#7
0
文件: views.py 项目: ecell/ecell3-ide
def send_feedback_as_email(form):
    import codecs
    msg = MIMEMultipart()
    currentLang = get_language()
    try:
        activate_lang('en_US')
        msg['From'] = '*****@*****.**'
        msg['To'] = settings.FEEDBACK_RECIPIENT
        msg['Subject'] = _(u'E-Cell IDE Feedback from %s') % form.cleaned_data['email']
        text = _(u'*** E-Cell IDE feedback ***\n')

        for field in form:
            rendered_text = ''
            data = form.cleaned_data[field.name]
            if isinstance(field.field, forms.FileField):
                if data != None:
                    rendered_text = "%s (%s)" % (
                        data.filename,
                        data.content_type
                        )
                else:
                    rendered_text = '(None)'
            elif isinstance(field.field, forms.ChoiceField):
                rendered_text = dict(field.field.choices)[data]
            else:
                rendered_text = data
            text += u"%s:\n%s\n\n" % ((field.label), rendered_text)
        msg.attach(MIMEText(
            codecs.getencoder('UTF-8')(text)[0],
            _charset = 'UTF-8'))
        if form.cleaned_data['screenshot'] != None:
            attach = MIMEImage(form.cleaned_data['screenshot'].read())
            msg.attach(attach)
        conn = SMTP('localhost', 25, 'chaperone.e-cell.org')
        conn.sendmail('*****@*****.**', settings.FEEDBACK_RECIPIENT, msg.as_string())
    finally:
        activate_lang(currentLang)
示例#8
0
def login_complete(request):
    # Get addres where to redirect after the login
    redirect_to = sanitise_redirect_url(OpenIDBackend.get_redirect_to(request))

    # Get OpenID response and test whether it is valid
    attribute_set, lang, openid_response = parse_openid_response(request)

    # Set language
    activate_lang(lang)

    if not openid_response:
        return render_failure(request, errors.EndpointError())

    # Check whether the user is already logged in
    user_orig = OpenIDBackend.get_user_from_request(request)
    user_model = get_user_model()

    if openid_response.status == SUCCESS:

        try:
            if user_orig:
                # Send a signal to obtain HttpResponse
                resp = associate_user.send(sender=__name__, request=request,
                                           openid_response=openid_response,
                                           attribute_set=attribute_set,
                                           redirect=redirect_to)
                resp = [r[1] for r in resp if isinstance(r[1], HttpResponse)]
                if resp:
                    # Return first valid response
                    return resp[0]

                # Create association with currently logged in user
                OpenIDBackend.associate_openid_response(user_orig, openid_response)
            else:
                # Authenticate mojeID user.
                # Send a signal to obtain HttpResponse
                resp = authenticate_user.send(sender=__name__, request=request,
                                              openid_response=openid_response,
                                              attribute_set=attribute_set,
                                              redirect=redirect_to)
                resp = [r[1] for r in resp if isinstance(r[1], HttpResponse)]
                if resp:
                    # Return first valid response
                    return resp[0]

                # Perform a default action
                user_new = OpenIDBackend.authenticate_using_all_backends(
                    openid_response=openid_response, attribute_set=attribute_set)
                if not user_new:
                    # Failed to create a user
                    return render_failure(request, errors.UnknownUser())
                if not OpenIDBackend.is_user_active(user_new):
                    # user is deactivated
                    return render_failure(request, errors.DisabledAccount(user_new))
                # Create an association with the new user
                OpenIDBackend.associate_user_with_session(request, user_new)
        except DjangoOpenIDException as e:
            # Something went wrong
            user_id = None
            try:
                # Try to get user id

                user_id = UserOpenID.objects.get(claimed_id=openid_response.identity_url).user_id
            except (UserOpenID.DoesNotExist, user_model.DoesNotExist):
                # Report an error with identity_url
                user_login_report.send(sender=__name__,
                                       request=request,
                                       username=openid_response.identity_url,
                                       method='openid',
                                       success=False)

            # Report an error with the username
            user_login_report.send(sender=__name__,
                                   request=request,
                                   username=openid_response.identity_url,
                                   user_id=user_id,
                                   method='openid',
                                   success=False)

            # Render the failure page
            return render_failure(request, errors.AuthenticationFailed(e))

        response = HttpResponseRedirect(redirect_to)

        # Send signal to log the successful login attempt
        user_login_report.send(sender=__name__,
                               request=request,
                               user_id=user_orig.id if user_orig else user_new.id,
                               method='openid',
                               success=True)

        return response

    # Render other failures
    elif openid_response.status == FAILURE:
        user_login_report.send(sender=__name__,
                               request=request,
                               username=openid_response.identity_url,
                               method='openid',
                               success=False)
        return render_failure(request, errors.OpenIDAuthenticationFailed(openid_response))

    elif openid_response.status == CANCEL:
        user_login_report.send(sender=__name__,
                               request=request,
                               username=openid_response.identity_url,
                               method='openid',
                               success=False)
        return render_failure(request, errors.OpenIDAuthenticationCanceled())
    else:
        user_login_report.send(sender=__name__,
                               request=request,
                               username=openid_response.identity_url,
                               method='openid',
                               success=False)
        return render_failure(request, errors.OpenIDUnknownResponseType(openid_response))