def change_language(request):
    """
    This is a modified version of i18n's version of set_language which
    supports GET requests as well.

    Original description:
    Redirect to a given url while setting the chosen language in the
    session or cookie. The url and the language code need to be
    specified in the request parameters.
    """

    response = HttpResponseRedirect(get_next_url(request))
    lang_code = request.POST.get('language', request.GET.get("language", None))

    if lang_code and check_for_language(lang_code):
        if hasattr(request, 'session'):
            request.session[LANGUAGE_SESSION_KEY] = lang_code
        else:
            cookieKwargs = {}
            _set_key(cookieKwargs, "max_age", "LANGUAGE_COOKIE_AGE")
            _set_key(cookieKwargs, "path", "LANGUAGE_COOKIE_PATH")
            _set_key(cookieKwargs, "domain", "LANGUAGE_COOKIE_DOMAIN")

            response.set_cookie(
                settings.LANGUAGE_COOKIE_NAME, lang_code, **cookieKwargs
            )

    return response
Exemplo n.º 2
0
    def process_response(self, request, response):
        if request.method == 'POST':
            language = request.POST.get('language')
            action = request.POST.get('action')
            if action == 'set_language' and check_for_language(language):
                host = request.get_host()
                next_url = request.GET.get('next', None)
                referer = request.META.get('HTTP_REFERER', None)

                if next_url:
                    if is_safe_url(url = next_url, host = host):
                        response = HttpResponseRedirect(next_url)
                elif referer:
                    if is_safe_url(url = referer, host = host):
                        referer_url = urlparse(referer)[2]
                        try:
                            # http://wenda.soso.io/questions/275666/django-templates-get-current-url-in-another-language
                            view = resolve(referer_url)
                            with translation.override(language):
                                next_url = reverse(view.view_name, args = view.args, kwargs = view.kwargs)
                                response = HttpResponseRedirect(next_url)
                        except (Resolver404, NoReverseMatch):
                            pass

                if hasattr(request, 'session'):
                    request.session[translation.LANGUAGE_SESSION_KEY] = language
                else:
                    response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language, max_age = settings.LANGUAGE_COOKIE_AGE, path = settings.LANGUAGE_COOKIE_PATH, domain = settings.LANGUAGE_COOKIE_DOMAIN)

        return response
Exemplo n.º 3
0
    def get(self, *args, **kwargs):
        lang = kwargs.pop('lang')
        next_url = self.request.GET.get('next')
        if (next_url or not self.request.is_ajax()) and not is_safe_url(url=next_url, host=self.request.get_host()):
            next_url = self.request.META.get('HTTP_REFERER')
            if next_url:
                next_url = urlunquote(next_url)  # HTTP_REFERER may be encoded.
            if not is_safe_url(url=next_url, host=self.request.get_host()):
                next_url = '/'
        response = HttpResponseRedirect(next_url) if next_url else HttpResponse(status=204)

        if lang and check_for_language(lang):
            if next_url:
                if lang == 'ru':
                    next_trans = re.sub("/en/", "/", next_url)
                else:
                    next_trans = translate_url(next_url, lang)
                if next_trans != next_url:
                    response = HttpResponseRedirect(next_trans)
            translation.activate(lang)
            if hasattr(self.request, 'session'):
                self.request.session[translation.LANGUAGE_SESSION_KEY] = lang
            else:
                response.set_cookie(
                    settings.LANGUAGE_COOKIE_NAME, lang,
                    max_age=settings.LANGUAGE_COOKIE_AGE,
                    path=settings.LANGUAGE_COOKIE_PATH,
                    domain=settings.LANGUAGE_COOKIE_DOMAIN,
                )
        return response
Exemplo n.º 4
0
def login(req):
	if req.method =='POST':
		username = req.POST.get('username')
		password = req.POST.get('password')
		user = auth.authenticate(username=username,password=password)

		if user is not None:
			response = HttpResponseRedirect('/index/')
			u = auth.admin.User.get_short_name(user)
			print u
			response.set_cookie("username", u, 3600)
			return response
		else:
			
			return HttpResponseRedirect('/login/')
	return render_to_response('login.htm',{})
def login(request):
    """
    登录页面
    :param request:
    :return:
    """
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']
        key = checkUserPassword(username, password)
        print('login key ', key)
        if key:
            response = HttpResponseRedirect('/ClubInterface/index/')
            response.set_cookie('key', value=key)
            response.set_cookie('name', value=username)
            return response
        else:
            return HttpResponse("ERROR")
    else:
        return render(request, 'ClubInterface/login.html')
Exemplo n.º 6
0
    def process_response(self, request, response):
        """
        Set compact P3P policies and save auth token to cookie.

        P3P is a WC3 standard (see http://www.w3.org/TR/P3P/), and although largely ignored by most
        browsers it is considered by IE before accepting third-party cookies (ie. cookies set by
        documents in iframes). If they are not set correctly, IE will not set these cookies.
        """
        if hasattr(request, "facebook") and request.facebook and request.facebook.oauth_token:
            if "code" in request.REQUEST:
                """ Remove auth related query params """
                path = get_full_path(request, remove_querystrings=['code', 'web_canvas'])
                response = HttpResponseRedirect(path)

            response.set_cookie('facebook_oauth_token', request.facebook.oauth_token.token)
        else:
            response.delete_cookie('facebook_oauth_token')

        response['P3P'] = 'CP="IDC CURa ADMa OUR IND PHY ONL COM STA"'

        return response
Exemplo n.º 7
0
    def post(self, request):
        source_url = request.POST.get('url', '')
        if not source_url:
            return HttpResponseBadRequest()

        if not settings.COOKIE_NAME_FOR_UUID in self.request.COOKIES.keys():
            user_uuid = uuid.uuid4()
        else:
            user_uuid = request.COOKIES.get(settings.COOKIE_NAME_FOR_UUID)

        if request.user.is_authenticated():
            # associate url with user
            ShortenUrl.objects.shorten_url(url=source_url, user=request.user)
        else:
            # associate url with user_uuid when user is not authenticated
            ShortenUrl.objects.shorten_url(url=source_url, user_uuid=user_uuid)

        response = HttpResponseRedirect(reverse('index'))
        response.set_cookie(settings.COOKIE_NAME_FOR_UUID, user_uuid, max_age=31536000)

        return response
Exemplo n.º 8
0
def logout(req):
	response = HttpResponseRedirect('/login/')
	response.delete_cookie('username')
	return response
Exemplo n.º 9
0
def logout(req):
    response = HttpResponseRedirect("/")
    response.delete_cookie("username", "/")
    response.delete_cookie("userid", "/")
    return response
Exemplo n.º 10
0
def index(request):  #Generates the index page
    if request.user.is_authenticated:
        return HttpResponseRedirect('/courses')
    return render(request, 'index.html')
Exemplo n.º 11
0
def user_upload_avatar(request):
    if not is_authenticated(request):
        return HttpResponseRedirect('..')
    nav = 'upload_avatar'
    user = get_login_user(request)
    return render_to_response('user/upload_avatar.html', locals())
Exemplo n.º 12
0
def inactivar_taller(request, taller_id):
    taller = Taller.objects.get(id=taller_id)
    taller.estado = 1
    taller.save()
    return HttpResponseRedirect(reverse_lazy('tallers:taller'))
Exemplo n.º 13
0
 def get(self, request, *args, **kwargs):
     if self.request.user.is_authenticated():
         return HttpResponseRedirect(reverse('helpdesk'))
     context = self.get_context_data(**kwargs)
     return self.render_to_response(context)
Exemplo n.º 14
0
def user_info(request):
    if not is_authenticated(request):
        return HttpResponseRedirect('..')
    nav = 'info'
    return HttpResponseRedirect('info_update')
Exemplo n.º 15
0
def signout(request):  #로그아웃 기능
    logout(request)
    return HttpResponseRedirect(reverse('index'))
Exemplo n.º 16
0
 def get(self, request, *args, **kwargs):
     shipment = self.get_object()
     return HttpResponseRedirect(get_model_url(shipment.order))
Exemplo n.º 17
0
Arquivo: utils.py Projeto: boyl/cms_zk
 def wrapper(request):
     if request.oauth_user is None:  # 重定向到微信认证页面
         return HttpResponseRedirect(reverse('authenticate'))
     else:
         return func(request)
Exemplo n.º 18
0
 def logout(self, request):
     self.logger.info('用户' + request.session['username'] + '退出登录成功')
     from django.contrib import auth
     auth.logout(request)
     return HttpResponseRedirect(reverse('login'))
Exemplo n.º 19
0
def profile(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect("/home",
                                    {'success': 'Successfully LoggedIn.'})
    else:
        return render(request, 'login.html')
Exemplo n.º 20
0
USE_I18N = True

USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = "/static/"

STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

STRIPE_PUBLIC_KEY = "pk_test_4kN2XG1xLysXr0GWDB07nt61"

SENDGRID_EMAIL_USERNAME = config("EMAIL_HOST_USER")
SENDGRID_EMAIL_HOST = "smtp.sendgrid.net"
SENDGRID_EMAIL_PASSWORD = "******"
SENDGRID_EMAIL_PORT = 587
EMAIL_USE_TLS = True
# DEFAULT_FROM_EMAIL = config("DEFAULT_FROM_EMAIL")
SENDGRID_API_KEY = config("SENDGRID_API_KEY")
SERVER_EMAIL = "*****@*****.**"

LOGIN_REDIRECT_URL = HttpResponseRedirect("http://localhost:3000")
STRIPE_WEBHOOK_SECRET = "whsec_8KHXs8U07a2iRz4fequVxXo1tjN3PLRM"

CORS_ORIGIN_WHITELIST = config(
    'CORS_ORIGIN_WHITELIST', cast=lambda v: [s.strip() for s in v.split(',')])
Exemplo n.º 21
0
 def form_valid(self, form):
     form.save()
     return HttpResponseRedirect(self.success_url)
Exemplo n.º 22
0
def add_reviews(request: HttpRequest, type: str, id: int) -> HttpResponse:
    initial = {}
    context = {}

    if request.method == "POST":
        form = ReviewForm(request.POST)

        if type == 'reservation':
            hotel_id = RoomReservation.objects.get(rr_id=id).hotel_id_id
            hotel = get_object_or_404(Hotel, pk=hotel_id)
            room_no = RoomReservation.objects.get(rr_id=id).room_no_id
            #room = get_object_or_404(Room,room_no= room_no)

            room_res = get_object_or_404(RoomReservation, pk=id)

            roomreview, created = RoomReview.objects.get_or_create(
                cid=request.user, rr_id=room_res)

            if form.is_valid():
                roomreview.hotel_id = hotel
                roomreview.rr_id = room_res
                roomreview.rating = form.data['rating']
                roomreview.text_content = form.data['text']
                roomreview.cid = request.user

                roomreview.save()

                return HttpResponseRedirect(f'/reservations/review/')

        if type == 'service':
            svc_id = get_object_or_404(ReservationService, pk=id)
            servicereview, created = ServiceReview.objects.get_or_create(
                cid=request.user, sid=svc_id)

            if form.is_valid():
                servicereview.cid = request.user
                servicereview.sid = svc_id
                servicereview.rating = form.data['rating']
                servicereview.text_content = form.data['text']
                servicereview.cid = request.user

                servicereview.save()

                return HttpResponseRedirect(f'/reservations/review')

        if type == 'breakfast':
            brk_id = get_object_or_404(ReservationBreakfast, pk=id)
            breakfastreview, created = BreakfastReview.objects.get_or_create(
                cid=request.user, bid=brk_id)

            if form.is_valid():
                breakfastreview.cid = request.user
                breakfastreview.bid = brk_id
                breakfastreview.rating = form.data['rating']
                breakfastreview.text_content = form.data['text']
                breakfastreview.cid = request.user

                breakfastreview.save()

                return HttpResponseRedirect(f'/reservations/review')

        return HttpResponse('something unexptected.')

    else:
        user = request.user
        initial['user'] = user
        form = ReviewForm(initial=initial)

        if type == 'reservation':
            room_reservations = form.get_room_reservations(user)
            values = room_reservations.get(id)
            form.fields['hotel_id'] = CharField(
                initial=values[0],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))
            form.fields['room_no'] = CharField(
                initial=values[1],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))

        if type == 'service':
            room_services = form.get_room_services(user)
            values = room_services.get(id)
            form.fields['reserviation_id'] = CharField(
                initial=values[0],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))
            form.fields['service'] = CharField(
                initial=values[1],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))

        if type == 'breakfast':
            room_breakfasts = form.get_room_breakfast(user)
            values = room_breakfasts.get(id)
            form.fields['reserviation_id'] = CharField(
                initial=values[0],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))
            form.fields['breakfast'] = CharField(
                initial=values[1],
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))

        context['form'] = form

    return render(request, 'add_reviews.html', context)
Exemplo n.º 23
0
 def post(self, request, *args, **kwargs):
     shipment = self.get_object()
     shipment.soft_delete()
     messages.success(request,
                      _("Shipment %s has been deleted.") % shipment.pk)
     return HttpResponseRedirect(get_model_url(shipment.order))
Exemplo n.º 24
0
 def forms_valid(self, forms, form_name):
     form_valid_method = "%s_form_valid" % form_name
     if hasattr(self, form_valid_method):
         return getattr(self, form_valid_method)(forms[form_name])
     else:
         return HttpResponseRedirect(self._get_success_url(form_name))
Exemplo n.º 25
0
 def get(self, request):
     # django自带的logout
     logout(request)
     # 重定向到首页
     return HttpResponseRedirect(reverse('index'))
Exemplo n.º 26
0
def logout(request):
    if 'user' in request.session:
        del request.session['user']
    return HttpResponseRedirect('.')
Exemplo n.º 27
0
 def post(self, request):
     contact_name = request.POST.get("member")
     return HttpResponseRedirect("groups/search/?name=" + contact_name)
Exemplo n.º 28
0
def user_change_password(request):
    if not is_authenticated(request):
        return HttpResponseRedirect('..')
    nav = 'change_password'
    user = get_login_user(request)
    return render_to_response('user/change_password.html', locals())
Exemplo n.º 29
0
    def form_valid(self, form, detalle_venta_form_set):

        #obtenemos la ultima de su  serie prara generar un nuevo numero
        qsComp_last = Venta.objects.filter(
            lfact=form.instance.titular.letra).order_by('nfact').last()

        if qsComp_last:
            form.instance.nfact = qsComp_last.nfact + 1
        else:
            form.instance.nfact = 1
        form.instance.lfact = form.instance.titular.letra

        self.object = form.save()
        detalle_venta_form_set.instance = self.object
        detalle_venta_form_set.save()
        total_base = 0

        detalles = DetalleVenta.objects.filter(
            venta=self.object).order_by('pk')
        for detalle in detalles:
            d = {
                'producto': detalle.producto,
                'cantidad': detalle.cantidad,
                'precio_venta': detalle.precio_venta
            }

            # Restamos los kilos de cada detalle en su almacen (silo)
            detalle.producto.kilos -= detalle.cantidad
            detalle.producto.save()

            # si el producto sale de un silo con lote
            if detalle.producto.lote:
                detalle.lote_heredado = detalle.producto.lote
                print("detalle lote", detalle.lote_heredado)
                detalle.save()
                #detalle.save(update_fields=["lote_heredado"])
                #DetalleVenta.objects.get(pk=detalle.pk).save(update_fields=["lote_heredado"])

            Historico.objects.create(venta=detalle.venta,
                                     producto=detalle.producto,
                                     cantidad=detalle.cantidad,
                                     precio_venta=detalle.precio_venta,
                                     fecha=detalle.fecha,
                                     lote_heredado=detalle.lote_heredado,
                                     kilos_actuales=detalle.producto.kilos)

            #calculamos su precio base
            total_detalle = detalle.cantidad * detalle.precio_venta
            print("valores en €")
            print(detalle.producto, total_detalle)
            total_base = total_base + total_detalle

        print("base ", total_base)
        #aplicamos impuestos
        form.instance.base = total_base
        form.instance.imp_aplicado = total_base * form.instance.impuestos.impuesto1 / 100
        print("valor de impuestto 1 ", form.instance.imp_aplicado)
        #Comprobamos si hay un segundo impuesto a aplicar
        if form.instance.impuestos.impuesto2:
            if form.instance.impuestos.se_calcula_con == "BASE":
                form.instance.imp_aplicado = form.instance.imp_aplicado + total_base * form.instance.impuestos.impuesto2 / 100
                print("calculando impuesto 2 BASE ",
                      form.instance.imp_aplicado)
            if form.instance.impuestos.se_calcula_con == "TOTAL":
                form.instance.imp_aplicado = form.instance.imp_aplicado + (
                    form.instance.imp_aplicado +
                    total_base) * form.instance.impuestos.impuesto2 / 100
                print("calculando impuesto 2 TOTAL",
                      form.instance.imp_aplicado)
        form.instance.total = total_base + form.instance.imp_aplicado

        print("impuestos ", form.instance.imp_aplicado)
        print("total", form.instance.total)

        form.instance.save()

        return HttpResponseRedirect(self.success_url)
Exemplo n.º 30
0
def user_management(request):
    user = request.session.get('user')
    if user is None:
        return HttpResponseRedirect('login')

    if user['role']['id'] not in (User.ADMINISTRATOR, ):
        return HttpResponseRedirect('')

    role_options = [{
        'name': '',
        'display_name': u'全部'
    }, {
        'name': 'admin',
        'display_name': u'管理员',
        'id': User.ADMINISTRATOR
    }, {
        'name': 'doctor',
        'display_name': u'医生',
        'id': User.DOCTOR
    }, {
        'name': 'advisor',
        'display_name': '咨询师',
        'id': User.ADVISOR
    }, {
        'name': 'patient',
        'display_name': '微服务用户',
        'id': User.PATIENT
    }]
    roles = role_options[1:]

    current_role = request.GET.get('role', '')
    query = request.GET.get('query', '')

    all_users = User.objects.filter(deleted=0)
    users = all_users

    if query:
        users = users.filter(
            Q(name__contains=query) | Q(guid__contains=query)
            | Q(username__contains=query))

    if current_role == 'admin':
        users = users.filter(role=User.ADMINISTRATOR)
    elif current_role == 'doctor':
        users = users.filter(role=User.DOCTOR)
    elif current_role == 'advisor':
        users = users.filter(role=User.ADVISOR)
    elif current_role == 'patient':
        users = users.filter(role=User.PATIENT)

    users = map(lambda u: view_model(u), users)
    # For some special roles, they have their own behaviors
    all_overseers = map(
        lambda u: view_model(u),
        filter(lambda u: u.role in (User.DOCTOR, User.ADVISOR), all_users))

    patient_users = filter(lambda u: u['role']['name'] == 'patient', users)
    for p_user in patient_users:
        patient = Patient.objects.get(user_id=p_user['id'])
        p_user['overseers'] = map(
            lambda r: view_model(r.overseer),
            RE_OverseePatients.objects.filter(patient_id=patient.id,
                                              overseer__deleted=0,
                                              deleted=0))
        # p_user['overseer_ids'] = map(lambda u: u.id, p_user['overseers'])
        p_user['patient'] = patient

    doctor_and_advisor_users = filter(
        lambda u: u['role']['name'] in ('doctor', 'advisor'), users)
    for overseer in doctor_and_advisor_users:
        oversee_records = RE_OverseePatients.objects.filter(
            overseer_id=overseer['id'], patient__deleted=0, deleted=0)
        overseeing_patients = map(lambda r: r.patient, oversee_records)

        overseer['overseeing_patients'] = overseeing_patients

    all_patients = Patient.objects.filter(deleted=0)

    return render_to_response('user_management.html', locals())
Exemplo n.º 31
0
    def form_valid(self, form, detalle_compra_form_set):

        #obtenemos la ultima de su  serie prara generar un nuevo numero
        qsComp_last = Compra.objects.filter(
            lfact=form.instance.titular.letra).order_by('nfact').last()

        if qsComp_last:
            form.instance.nfact = qsComp_last.nfact + 1
        else:
            form.instance.nfact = 1
        form.instance.lfact = form.instance.titular.letra

        self.object = form.save()
        detalle_compra_form_set.instance = self.object
        detalle_compra_form_set.save()
        total_base = 0

        detalles = DetalleCompra.objects.filter(
            compra=self.object).order_by('pk')
        for detalle in detalles:
            d = {
                'producto': detalle.producto,
                'cantidad': detalle.cantidad,
                'precio_compra': detalle.precio_compra
            }

            #sumamos los kilos de cada detalle en su almacen(silo)
            #p = Producto.objects.get(descripcion=detalle.producto)
            #p.kilos = p.kilos + detalle.cantidad
            #p.save()

            detalle.producto.kilos += detalle.cantidad
            detalle.producto.save()

            # si el producto entra a un silo con lote
            if detalle.producto.lote:
                detalle.lote_heredado = detalle.producto.lote
                print("detalle lote", detalle.lote_heredado)
                detalle.save()
                #detalle.save(update_fields=["lote_heredado"])
                #DetalleVenta.objects.get(pk=detalle.pk).save(update_fields=["lote_heredado"])

            #qs = DetalleVenta.objects.get(pk =detalle.pk)
            #print("guardado en historico ", qs.producto, qs.cantidad, qs.precio_venta, qs.lote_heredado)
            Historico.objects.create(compra=detalle.compra,
                                     producto=detalle.producto,
                                     cantidad=detalle.cantidad,
                                     precio_compra=detalle.precio_compra,
                                     fecha=detalle.fecha,
                                     lote_heredado=detalle.lote_heredado,
                                     kilos_actuales=detalle.producto.kilos)

            #calculamos su precio base
            total_detalle = detalle.cantidad * detalle.precio_compra
            print("valores en €")
            print(detalle.producto, total_detalle)
            total_base = total_base + total_detalle

        print("base ", total_base)
        #aplicamos impuestos
        form.instance.base = total_base
        form.instance.imp_aplicado = total_base * form.instance.impuestos.impuesto1 / 100
        print("valor de impuestto 1 ", form.instance.imp_aplicado)
        #Comprobamos si hay un segundo impuesto a aplicar
        if form.instance.impuestos.impuesto2:
            if form.instance.impuestos.se_calcula_con == "BASE":
                form.instance.imp_aplicado = form.instance.imp_aplicado + total_base * form.instance.impuestos.impuesto2 / 100
                print("calculando impuesto 2 BASE ",
                      form.instance.imp_aplicado)
            if form.instance.impuestos.se_calcula_con == "TOTAL":
                form.instance.imp_aplicado = form.instance.imp_aplicado + (
                    form.instance.imp_aplicado +
                    total_base) * form.instance.impuestos.impuesto2 / 100
                print("calculando impuesto 2 TOTAL",
                      form.instance.imp_aplicado)
        form.instance.total = total_base + form.instance.imp_aplicado

        print("impuestos ", form.instance.imp_aplicado)
        print("total", form.instance.total)

        form.instance.save()

        ############# PDF ###################

        # obtenemos los detalles de esta facuta para crear un nested dict
        detalles = DetalleCompra.objects.filter(compra=form.instance.pk)
        lineas = {}
        i = 1
        for d in detalles:
            detalle_total = d.precio_compra * d.cantidad
            lineas['linea' + str(i)] = {
                'producto': d.producto.variedad,
                'cantidad': d.cantidad,
                'precio': d.precio_compra,
                'total': detalle_total,
                'lote_heredado': d.lote_heredado
            }
            i = i + 1

        compra = Compra.objects.get(pk=form.instance.pk)
        context = {
            'numero': compra.nfact,
            'fecha': compra.fecha,
            'forma_pago': compra.forma_pago,
            'titular_nombre': compra.titular.nombre,
            'titular_cif': compra.titular.cif,
            'titular_direccion': compra.titular.direccion,
            'proveedor_nombre': compra.proveedor.razon_social,
            'proveedor_ruc': compra.proveedor.ruc,
            'proveedor_direccion': compra.proveedor.direccion,
            'proveedor_certificado': compra.proveedor.entidad_certificadora,
            'base': compra.base,
            'impuestos': compra.impuestos,
            'imp_aplicado': compra.imp_aplicado,
            'total': compra.total,
            'lineas': lineas
        }
        print(context)
        '''context = {
            'acta': qsacta,
            'laboratorio': qslaboratorio,
            'muestreo': qsmuestreo,
            'pk': pk,
            'tipo': tipo
        }'''

        template_path = 'plantilla_email.html'
        template = get_template(template_path)
        # html = template.render(form.instance.__dict__)
        html = template.render(context)
        # print(form.instance.__dict__)

        ## definir los datos del diccionario, este no sirve
        ## hacer bien los estilos, los de boostrap no funcionan
        ## los estilos que soporta estan bastante limitados
        ## https://xhtml2pdf.readthedocs.io/en/latest/reference.html#supported-css-properties

        ndocumento1 = "factura" + str(form.instance.nfact) + ".pdf"
        #ddocumento = os.path.join(settings.MEDIA_ROOT, ndocumento1)
        ddocumento = ndocumento1
        outFilename = ddocumento
        outFile = open(outFilename.encode("utf-8"), "w+b")
        pisaStatus = pisa.CreatePDF(html.encode('utf-8'),
                                    dest=outFile,
                                    encoding='utf-8')
        outFile.close()
        ndocumento = ddocumento
        # ddocumento = os.path.join(settings.MEDIA_ROOT, ndocumento)
        leerdocumento = open(ddocumento.encode("utf-8"), "rb").read()

        ############### EMAIL ##################33

        b = base64.b64encode(leerdocumento).decode("utf-8", "ignore")

        nombredocumento = "factura" + str(form.instance.nfact) + ".pdf"
        email = "*****@*****.**"
        asunto = "Factura de compra"
        cuerpo = "Buenos dias, adjuntamos factura de compra"
        body = cuerpo
        # Replace this texto in plantilla cuerpo
        body_content = mark_safe(body)
        html_content = mark_safe(body_content)
        remitente = settings.EMAIL_HOST_USER
        destinatario = email
        try:
            msg = EmailMessage(asunto, html_content, remitente, [destinatario])
            msg.attach(nombredocumento, leerdocumento, "application/pdf")
            msg.content_subtype = "pdf"  # Main content is now text/html
            msg.encoding = 'utf-8'
            msg.send()
            print("mensaje enviado ")
        except Exception as e:
            print("no se ha podido enviar ", e)

        return HttpResponseRedirect(self.success_url)
 def get(self, request, *args, **kwargs):
     return HttpResponseRedirect(self.get_object().url)
Exemplo n.º 33
0
def view_resumes(request, job_post_id):
    job_post = get_object_or_404(JobPost, id=job_post_id)
    selected_skills = []
    agency_resumes = AppliedJobs.objects.filter(job_post=job_post)

    if request.POST.get('recruiters'):
        agency_resumes = agency_resumes.filter(
            applicant__uploaded_by_id=request.POST.get('recruiters'))
    if request.POST.get('experience'):
        agency_resumes = agency_resumes.filter(
            applicant__experience=request.POST.get('experience'))
    if request.POST.getlist('skills'):
        skills = Skill.objects.filter(id__in=request.POST.getlist('skills'))
        agency_resumes = agency_resumes.filter(applicant__skill__in=skills)
        selected_skills = request.POST.getlist('skills')

    if request.POST.get('apply_job'):
        if request.POST.get('jobposts_type'):

            for each in request.POST.getlist('apply_job'):
                agency_applicant = AgencyApplicants.objects.get(
                    id=each, job_post=job_post)
                agency_applicant.status = request.POST.get('jobposts_type')
                agency_applicant.save()

                agency_applicant.applicant.status = 'Pending'
                agency_applicant.applicant.save()

            if str(request.POST.get('jobposts_type')) == 'Hired':
                applicants = AgencyApplicants.objects.filter(
                    id__in=request.POST.getlist('apply_job')).values_list('applicant', flat=True)
                applicant_agency_resumes = AgencyResume.objects.filter(
                    id__in=applicants)
                applicant_agency_resumes.update(
                    status=request.POST.get('jobposts_type'))

    no_of_jobs = len(agency_resumes)
    items_per_page = 10
    no_pages = int(math.ceil(float(len(agency_resumes)) / items_per_page))

    try:
        if int(request.GET.get('page')) > (no_pages + 2):
            page = 1
            return HttpResponseRedirect(reverse('jobs:index'))
        else:
            page = int(request.GET.get('page'))
    except:
        page = 1
    agency_resumes = agency_resumes[
        (page - 1) * items_per_page:page * items_per_page]
    prev_page, previous_page, aft_page, after_page = get_prev_after_pages_count(
        page, no_pages)
    skills = Skill.objects.filter(status='Active')
    recruiters = User.objects.filter(company=request.user.company)
    return render(request, "recruiter/company/job_resume_view.html", {'job_post': job_post,
                                                                      'agency_resumes': agency_resumes,
                                                                      'recruiters': recruiters,
                                                                      'years': YEARS,
                                                                      'skills': skills,
                                                                      'aft_page': aft_page,
                                                                      'after_page': after_page,
                                                                      'prev_page': prev_page,
                                                                      'previous_page': previous_page,
                                                                      'current_page': page,
                                                                      'last_page': no_pages,
                                                                      'no_of_jobs': no_of_jobs,
                                                                      'status': POST,
                                                                      'selected_skills': selected_skills
                                                                      })
Exemplo n.º 34
0
def logout_view(request):
    logout(request)
    return HttpResponseRedirect(reverse("loginView"))
Exemplo n.º 35
0
    def add(self, request):
        title_name = "新增" + self.model_cnname + "信息:"
        if request.method == 'POST':
            post_form = self.import_forms(request.POST, request.FILES)
            if post_form.is_valid():
                # 这段代码完全是为了处理字段类型为filefiled,如果不需要使用filefiled的话,直接post_form.save()
                new_value = {}
                media_dir = MEDIA_ROOT.replace(BASE_DIR + '/', '')
                for key in self.detail_field_list:
                    post_key = key.replace('_id', '')
                    # 对于外键来说,字段名是以_id结尾的,但forms提交是不带_id的,需要根据外键表的名字查找外键表的ID,然后判断和数据库是否一致,如果一致不修改。让request.POST字典的key和detail_field_list相同,让新字典的key值等于post的post_key相等

                    if hasattr(
                            self,
                            'filefield_dict') and key in self.filefield_dict:
                        # 处理filefield
                        filename = key + '_' + str(request.FILES[key])
                        # 文件名,字段名+上传文件名
                        file = request.FILES[key]
                        upload_dir = MEDIA_ROOT + '/upload/' + self.app_name + '/' + self.model_name + '/' + request.POST.get(
                            'name') + '/'
                        # 上传目录,MEDIA_ROOT/upload/app名/modles名/字段name的值/

                        from .webpage import uploadfile
                        fullfilename = uploadfile(file, filename, upload_dir)
                        # 最终目录为MEDIA_ROOT.replace(BASE_DIR,'')/upload/app名/modles名/字段name的值/字段名_上传文件名,防止出现重复替换操作
                        value = media_dir + '/upload/' + self.app_name + '/' + self.model_name + '/' + request.POST.get(
                            'name') + '/' + filename
                        # 数据库中写相对路径
                    else:
                        value = request.POST.get(post_key)
                        value_str = str(value)

                        # 日期转换
                        if re.search('^[0-9][0-9][0-9][0-9]/[0-1][0-9]',
                                     value_str):
                            from .handle_datetime import date_convert
                            value = date_convert(value_str, '%Y-%m-%d')

                        new_value[key] = value

                try:
                    self.import_models.objects.create(**new_value)
                except Exception as e:
                    write_log(
                        'warning', self.op_user, self.model_cnname +
                        '新增数据失败,' + str(new_value) + ',原因如下:\n' + str(e))

                # post_form.save()
                return HttpResponseRedirect(reverse('list_' + self.model_name))
            else:
                errors_message = post_form.errors
                write_log(
                    'warning', self.op_user, self.model_cnname + '新增失败' +
                    str(post_form) + ',原因如下:\n' + str(errors_message))
                return render(request, 'result.html',
                              {'error_message': str(errors_message)})
        else:
            get_form = self.import_forms()
            request_dict = {'title_name': title_name, 'get_form': get_form}
            return render(request, 'add_edit.html', request_dict)
Exemplo n.º 36
0
 def get(self, request):
     response = HttpResponseRedirect('/')
     response.set_cookie('sessionid', None)
     return response
Exemplo n.º 37
0
    def edit(self, request):
        edit_id = request.GET.get('id')
        query_set = self.import_models.objects.select_related().using(
            'mysql_read').filter(id=edit_id).values().distinct()
        query_set = list(query_set)[0]

        if request.method == 'GET':
            url_front = self.app_basedir + self.model_name
            title_name = '编辑' + self.model_cnname + '【' + query_set[
                'name'] + '】信息:'

            try:
                instance = self.import_models.objects.select_related().using(
                    'mysql_read').get(id=edit_id)
                get_form = self.import_forms(instance=instance)
                request_dict = {
                    'title_name': title_name,
                    'get_form': get_form,
                    'url_front': url_front
                }
                return render(request, 'add_edit.html', request_dict)
            except Exception as e:
                write_log(
                    'warning', self.op_user,
                    self.model_cnname + '编辑:' + str(edit_id) + '失败' + str(e))
                return HttpResponseRedirect(reverse('list_' + self.model_name))

        if request.method == 'POST':
            new_value = {}

            media_dir = MEDIA_ROOT.replace(BASE_DIR + '/', '')

            for key in self.detail_field_list:
                post_key = key.replace('_id', '')
                query_value = query_set[key]
                query_value = str(query_value)
                if not query_value:
                    query_value = ''

                if hasattr(self,
                           'filefield_dict') and key in self.filefield_dict:
                    # 这个if的内容主要处理文件上传,即字段类型为filefiled的。
                    try:
                        # 使用try是因为在编辑时,不上传图片,导致报错
                        filename = key + '_' + str(request.FILES[key])
                        # 文件名,字段名+上传文件名
                        file = request.FILES[key]
                        upload_dir = MEDIA_ROOT + '/upload/' + self.app_name + '/' + self.model_name + '/' + request.POST.get(
                            'name') + '/'
                        # 上传目录,MEDIA_ROOT/upload/app名/modles名/字段name的值/

                        from library.webpage import uploadfile
                        fullfilename = uploadfile(file, filename, upload_dir)
                        # 最终目录为MEDIA_ROOT.replace(BASE_DIR,'')/upload/app名/modles名/字段name的值/字段名_上传文件名,防止出现重复替换操作
                        new_value[
                            key] = media_dir + '/upload/' + self.app_name + '/' + self.model_name + '/' + request.POST.get(
                                'name') + '/' + filename
                        # 数据库中写相对路径
                    except:
                        # 如果没有上传文件,把新值等于数据库中的值
                        new_value[key] = query_value
                elif hasattr(self,
                             'deny_edit_list') and key in self.deny_edit_list:
                    # 属于禁止修改的字段,不允许修改
                    pass
                elif hasattr(self, 'forgkey_field_list'
                             ) and post_key in self.forgkey_field_list:
                    # 对于外键来说,数据库中的字段名是以_id结尾的,但forms提交是不带_id的,需要根据外键表的名字查找外键表的ID,然后判断和数据库是否一致,如果一致不修改
                    post_value = request.POST.get(post_key)

                    if query_value != str(post_value):
                        if post_value == '':
                            new_value[key] = ''
                        else:
                            new_value[key] = int(post_value)
                else:
                    value = request.POST.get(key)
                    value_str = str(value)

                    if re.search('^[0-9][0-9][0-9][0-9]/[0-1][0-9]',
                                 value_str):
                        from library.handle_datetime import date_convert
                        value = date_convert(value_str, '%Y-%m-%d')

                    if query_value != str(value):
                        new_value[key] = value

            if new_value:
                try:
                    self.import_models.objects.filter(id=edit_id).update(
                        **new_value)
                except Exception as e:
                    write_log(
                        'warning', self.op_user, self.model_cnname + '修改ID:' +
                        edit_id + '失败,' + str(new_value) + ',原因如下:\n' + str(e))
            else:
                write_log('debug', self.op_user,
                          self.model_cnname + '无需修改ID:' + edit_id + ',数据没有更新')

            return HttpResponseRedirect(reverse('list_' + self.model_name))
Exemplo n.º 38
0
def init_yup_web_payment(request, *args, **kwargs):
    api_url = getattr(settings, 'YUP_API_URL',
                      'https://33026.tagpay.fr/online/online.php')
    yup = json.loads(PaymentMean.objects.get(slug=YUP).credentials)
    phone = UNKNOWN_PHONE
    service = get_service_instance()
    request.session['phone'] = phone
    amount = int(request.session['amount'])

    model_name = request.session['model_name']
    object_id = request.session['object_id']
    if request.user.is_authenticated():
        username = request.user.username
        language = request.user.language
    else:
        username = None
        language = 'en'

    # Request a session id
    try:
        params = {'merchantid': yup['merchant_id']}
        session_id_request = requests.get(api_url, params=params, verify=False)
    except requests.exceptions.HTTPError as errh:
        logger.error("YUP: Http Error:", errh)
        return HttpResponseRedirect(request.session['cancel_url'])
    except requests.exceptions.ConnectionError as errc:
        logger.error("Error Connecting:", errc)
        return HttpResponseRedirect(request.session['cancel_url'])
    except requests.exceptions.Timeout as errt:
        logger.error("Timeout Error:", errt)
        return HttpResponseRedirect(request.session['cancel_url'])
    except requests.exceptions.RequestException as err:
        logger.error("OOps: Something Else", err)
        return HttpResponse(request.session['cancel_url'])

    session_id_resp_message = session_id_request.text
    if session_id_resp_message[:2] == "NO":
        logger.debug(
            "YUP: Unable to provide a session with %s as Merchand ID" %
            (yup['merchant_id']))
        logger.debug("YUP: SERVER ERR TEXT is : %s" % session_id_resp_message)
        return HttpResponse(
            "Error, YUP: Unable to provide a session with %s as Merchand ID; Please check and restart"
            % (yup['merchant_id']))
    else:
        logger.debug("YUP: Session ID OK; ")
        session_id = session_id_resp_message.replace('OK:', '')
    payments_conf = getattr(settings, 'PAYMENTS', None)
    if payments_conf:
        conf = request.session['payment_conf']
        path = payments_conf[conf]['after']
    else:
        path = getattr(settings, 'MOMO_AFTER_CASH_OUT')
    with transaction.atomic(using='wallets'):
        try:
            momo_tx = MoMoTransaction.objects.using('wallets').get(
                object_id=object_id)
        except MoMoTransaction.DoesNotExist:
            momo_tx = MoMoTransaction.objects.using('wallets').create(
                service_id=service.id,
                type=MoMoTransaction.CASH_OUT,
                phone=phone,
                amount=amount,
                model=model_name,
                object_id=object_id,
                wallet=YUP,
                username=username,
                callback=path)
        except MoMoTransaction.MultipleObjectsReturned:
            momo_tx = MoMoTransaction.objects.using('wallets').filter(
                object_id=object_id)[0]

    request.session['tx_id'] = momo_tx.id
    accept_url = request.session['return_url']
    # accept_url += '/%d' % momo_tx.id
    company_name = slugify(service.config.company_name).replace('-', ' ')

    logger.debug("YUP: Initiating paymentof %dF with %s as Merchand ID" %
                 (amount, yup['merchant_id']))
    context = {
        'api_url': api_url,
        'sessionid': session_id,
        'merchantid': yup['merchant_id'],
        'amount': amount,
        'currency': CURRENCY,
        'purchaseref': object_id,
        'phone': phone,
        'brand': company_name,
        'description': '',
        'declineurl': request.session['cancel_url'],
        'cancelurl': request.session['cancel_url'],
        'accepturl': accept_url,
        'text': '',
        'language': language
    }
    return render(request, 'billing/yup/do_redirect.html', context)
Exemplo n.º 39
0
    def post(self, request: HttpRequest, *args: Tuple, **kwargs: Dict[str,
                                                                      Any]):
        form = ReservationForm(request.POST)
        hotel = get_object_or_404(Hotel, hotel_id=kwargs['hotel_id'])

        # NOTE: refactor these fields
        svcs = form.get_services(hotel)
        form.fields['service'] = MultipleChoiceField(
            required=False,
            choices=svcs,
            widget=forms.CheckboxSelectMultiple())

        bkfst = form.get_breakfast(hotel)
        form.fields['breakfast'] = EmptyChoiceField(
            required=False, choices=bkfst,
            empty_label='---- none ----')  #, widget=CheckboxInput()) #

        rooms = form.get_rooms(hotel)
        form.fields['room_choice'] = ChoiceField(required=True, choices=rooms)

        if len(rooms) > 0:
            disc = form.get_discounts(rooms[0][0], form.fields['check_in'],
                                      form.fields['check_out'])
            form.fields['discount'] = CharField(
                initial=disc,
                required=False,
                widget=forms.TextInput(attrs={'readonly': 'readonly'}))
        # END refactor

        user = request.user
        context = {}
        messages = []
        context = {'form': form}
        if form.is_valid():
            if form.cleaned_data['check_in'] < datetime.datetime.today().date(
            ):
                messages.append('check in today or future')

            if form.cleaned_data['check_in'] >= form.cleaned_data['check_out']:
                messages.append('check out must be greater than check in')

            # checks: cc date in future
            cc_exp_date = datetime.date(
                int(form.cleaned_data['credit_card_year']),
                int(form.cleaned_data['credit_card_month']), 1)
            if cc_exp_date < datetime.date.today():
                messages.append('credit card date must be greater than today')

            # we can now persist.
            if len(messages) == 0:

                s_list = []
                for s in form.cleaned_data['service']:
                    s_list.append(Service.objects.get(pk=s))

                new_booking = BookingRequest(
                    hotel,
                    form.cleaned_data['room_choice'],
                    form.cleaned_data['credit_card_number'],
                    form.cleaned_data['credit_card_type'],
                    form.cleaned_data['credit_card_month'],
                    form.cleaned_data['credit_card_year'],
                    form.cleaned_data['credit_card_code'],
                    form.cleaned_data['credit_card_address'],
                    form.cleaned_data['credit_card_name'],
                    request.user,
                    datetime.date.today(),
                    form.cleaned_data['check_in'],
                    form.cleaned_data['check_out'],
                    form.cleaned_data['breakfast'],
                    form.cleaned_data['breakfast_number_orders'],
                    s_list,
                )

                # order of saving:
                # 1. credit card x
                # 2. reservation x
                # 3. room_reservation x
                # 4. rresb_breakfast x
                # 5. rresv_service x

                @transaction.atomic
                def save_reservation(n_req: BookingRequest):

                    card = CreditCard()
                    card.address = n_req.credit_card_address
                    card.cc_number = n_req.credit_card_number
                    card.cc_type = n_req.credit_card_type
                    card.cv_code = n_req.credit_card_code
                    exp_date = datetime.date(int(n_req.credit_card_year),
                                             int(n_req.credit_card_month), 1)
                    card.expiration_date = exp_date

                    card.save()

                    resv = Reservation()
                    resv.cid = n_req.cust_id
                    resv.r_date = n_req.res_date
                    # grab the key
                    resv.cc_number = card

                    resv.save()

                    room = Room.objects.get(pk=n_req.room)
                    rr_resv = RoomReservation()
                    rr_resv.check_in_date = n_req.check_in
                    rr_resv.check_out_date = n_req.check_out
                    rr_resv.hotel_id = n_req.hotel
                    # grab the key
                    rr_resv.room_no = room
                    rr_resv.invoice_number = resv

                    rr_resv.save()

                    # breakfast
                    if len(n_req.breakfast) > 0:
                        br = ReservationBreakfast()
                        br.bid = Breakfast.objects.get(pk=n_req.breakfast)
                        br.nooforders = n_req.breakfast_number_orders
                        br.rr_id = rr_resv  # resv

                        br.save()

                    # services
                    for s in n_req.svc_id:
                        resv_svc = ReservationService()
                        resv_svc.sid = s
                        resv_svc.rr_id = rr_resv  #  resv
                        resv_svc.sprice = s.s_price

                        resv_svc.save()

                save_reservation(new_booking)

                return HttpResponseRedirect(f'/reservations/bookings/')

            context['messages'] = messages
            return render(request, 'bookhotel.html', context)

        else:
            messages.append('form is invalid')
            for e in form.errors:
                messages.append(e)

            context['messages'] = messages

        return render(request, 'bookhotel.html', context)
Exemplo n.º 40
0
def product_view(request, slug):
    product = get_object_or_404(Product, slug=slug)
    if product.draft and (not request.user.is_authenticated() or not request.user.is_staff):
        raise Http404
    if product.member_only and (not request.user.is_authenticated() or not request.user.is_member):
        raise Http404

    sale = get_sale(request) or Sale()

    if sale.pk and product.quantifiable:
        # See if we have any order lines already saved for this product
        # if it's quantifiable. Otherwise, we don't let them edit it except
        # by going to the cart and deleting it; instead, they can add a new
        # one.
        order_lines = []
        for price in product.prices.all():
            try:
                order_lines.append(OrderLine.objects.get(sale=sale, product=product, price=price))
            except OrderLine.DoesNotExist:
                order_lines.append(OrderLine(product=product, price=price))
        if not order_lines:
            try:
                order_lines.append(OrderLine.objects.get(sale=sale, product=product, price=None))
            except OrderLine.DoesNotExist:
                order_lines.append(OrderLine(product=product, price=None))
    else:
        order_lines = [OrderLine(product=product, price=price) for price in product.prices.all()]
        if not order_lines:
            order_lines.append(OrderLine(product=product))

    if request.method == 'POST':
        forms = [OrderLineForm(instance=x, data=request.POST) for x in order_lines]
        if all(form.is_valid() for form in forms):
            print("VALID!")  # FIXME
            # Did they actually order anything?
            if any(form.has_any() for form in forms):
                # YES!
                # We want a sale!
                if not sale.pk:
                    sale = Sale.objects.create()
                for form in forms:
                    if form.has_any():
                        form.instance.sale = sale
                        form.save()
            # Did they change any existing items to zero?
            for form in forms:
                if not form.has_any():
                    if form.instance.pk:
                        form.instance.delete()
            if sale.pk:
                response = HttpResponseRedirect(reverse('store'))
                response.set_signed_cookie('sale', sale.pk, salt=settings.SECRET_KEY)
                return response
            return redirect(reverse('store'))
        else:
            print("SOME FORM IS NOT VALID")  # FIXME
            for form in forms:
                print(form.errors)
    else:
        forms = [OrderLineForm(instance=x) for x in order_lines]

    context = {
        'product': product,
        'forms': forms,
        'sale': sale,
        'PRICE_ONE': Product.PRICE_ONE,
        'PRICE_MULTIPLE': Product.PRICE_MULTIPLE,
        'PRICE_USER': Product.PRICE_USER,
    }
    response = render(request, 'store/product.html', context)
    if sale.pk:
        response.set_signed_cookie('sale', sale.pk, salt=settings.SECRET_KEY)
    return response
Exemplo n.º 41
0
def logout(request):
    logout_user(request)
    return HttpResponseRedirect("/")