Exemple #1
0
def add_new_solution(request):
    if request.method == 'GET':
        s = request.GET.get('s')
        if not s:
            return render(request, 'help_desk/call/AddSolution.html')
        try:
            sol = Solutions.objects.get(pk=s)
            return render(request, 'help_desk/call/AddSolution.html',
                          {'solution': sol})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        sid = request.POST.get('s')
        if not sid:
            sol = Solutions()
        else:
            if Solutions.objects.filter(pk=sid).exists():
                sol = Solutions.objects.get(pk=sid)
            else:
                return redirect(reverse(view_all_solutions))
        try:
            sol.short_text = request.POST.get('txtShort')
            sol.description = request.POST.get('txtDescription')
            sol.save()
            fire_event(3356, sol, None, request.user.pk)
            return redirect(reverse(view_all_solutions))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #2
0
def post(request):
    invoice_user_id = request.POST.get('u', 'Invalid')
    service_id = request.POST.get('s', 'invalid')
    extra_month = request.POST.get('m')
    property_id = request.POST.get('pr', -1)
    if not validate_integer(extra_month):
        extra_month = 1
    if not validate_integer(invoice_user_id):
        return render(request, 'errors/CustomError.html',
                      {'error_message': _('invalid user data')})
    if not validate_integer(service_id):
        return render(request, 'errors/ServerError.html')
    if request.POST.get('cancel'):
        return redirect(
            reverse(show_user_navigation) + '?uid=%s' % invoice_user_id)
    if request.user.is_staff or request.user.is_superuser:
        user = User.objects.get(pk=invoice_user_id)
    else:
        user = request.user
    if not IBSService.objects.filter(
            pk=service_id, is_visible=True, is_deleted=False).exists():
        fire_event(6362, user)
        return redirect('/')
    i_s = IBSService.objects.get(pk=service_id)

    x = InvoiceGen(i_s,
                   1,
                   service_property=property_id,
                   uid=user.pk,
                   extra_month=extra_month)
    x.calculate()
    if user.fk_vip_users_group_user.exists():
        vid = user.fk_vip_users_group_user.get().pk
    else:
        vid = None
    if not is_in_valid_services(service_id, int(property_id), vid):
        return redirect(
            reverse(show_user_navigation) + '?uid=%s' % invoice_user_id)
    service_pr = ServiceProperty.objects.get(pk=property_id)
    try:
        if service_pr.fk_vip_services_service.exists():
            if not user.fk_vip_users_group_user.exists():
                fire_event(10547, user)
                return redirect('/')
            if service_pr.fk_vip_services_service.get().group.group_id != \
                    user.fk_user_service_group_user.get().service_group_id:
                fire_event(10547, user)
                return redirect('/')
        if not x.get_is_done():
            fire_event(10276, user)
            return redirect('/')
        f = x.get_invoice()
        f.save()
        fire_event(5524, f)
        if request.user.is_staff:
            return redirect(reverse(show_all_invoices))
        return redirect(reverse(e_pay_invoice) + '?f=' + str(f.pk))
    except Exception as e:
        print e.args[1]
        return render(request, 'errors/ServerError.html')
Exemple #3
0
def create_internet_account(request):
    if request.method == 'GET':
        uid = request.GET.get('u')
        if not validate_integer(uid):
            return send_error(request, _('no user selected'))
        if not User.objects.filter(pk=uid).exists():
            return redirect('/')
        ibs = IBSManager()
        rnd = ''.join(random.choice(string.lowercase) for i in range(5))
        u = User.objects.get(pk=uid)
        u.is_active = True
        if not ibs.add_new_user(u.username, rnd, 0):
            return send_error(request, _('unable to create ibs user'))
        u.set_password(rnd)
        u.save()
        ib_id = ibs.get_user_id_by_username(u.username)
        ibi = IBSUserInfo()
        ibi.ibs_uid = int(ib_id)
        ibi.user = u
        ibi.save()
        u.groups.add(Group.objects.get(pk=int(read_config('groups_customer', 1))))
        update_ibs_user_from_crm(u.pk)
        fire_event(4537, u, None, request.user.pk)
        return redirect('/user/nav/?uid=%s' % uid)
    else:
        return redirect('/')
Exemple #4
0
def temp_recharge(request):
    return redirect('/')
    user = request.user
    granted = False
    if user.is_staff or user.is_superuser:
        granted = True
    if request.method == 'GET':
        if not granted:
            uid = user.pk
        else:
            uid = request.GET.get('uid')
        if not validate_integer(uid):
            return render(request, 'errors/ServerError.html')
        if not granted:
            check = check_user_temp_charge(int(uid))
            if not check:
                fire_event(4300, request.user, None, request.user.pk)
                return redirect(
                    reverse(show_user_service_summery) + '?u=%s' % uid)
        res = temp_charge_user(uid, user.pk)
        if res:
            kill_user(uid, get_client_ip(request))
            # send_from_template.delay(uid, 15, ftime=read_config('service_temp_time', 2),
            #                          fta=read_config('service_temp_amount', 700))
            return redirect(reverse(show_user_service_summery) + '?u=%s' % uid)
        else:
            fire_event(4124, request.user, None, request.user.pk)
            return render(
                request, 'errors/CustomError.html',
                {'error_message': _('unable to charge. contact support')})
Exemple #5
0
def delete_group(request):
    delete_group.__cid__ = 2200
    if request.method == 'GET':
        gid = request.GET.get('gid')
        if gid is None:
            return redirect(reverse(show_all_groups))
        if not validate_integer(gid):
            return redirect(reverse(show_all_groups))
        try:
            group = Group.objects.get(pk=gid)
            return render(request, 'group/DeleteGroupConfirm.html',
                          {'group': group})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        gid = request.POST.get('gid', -1)
        if gid is -1 and not validate_integer(gid):
            return redirect(reverse(show_all_groups))
        try:
            Group.objects.get(pk=gid).delete()
            fire_event(delete_group, None, gid, request.user.pk)
            return redirect(reverse(show_all_groups))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html', {})
Exemple #6
0
def assign_user_ip_address(invoice):
    res = configure_static_ip_address(invoice.user_id)
    if res[0]:
        fire_event(3731, invoice, None, invoice.user_id)
    else:
        fire_event(5052, invoice, None, invoice.user_id)
    return res
Exemple #7
0
def temp_charge_user(user_id, requester_id):
    if not validate_integer(user_id):
        return False
    try:
        if not IBSUserInfo.objects.filter(user=user_id).exists():
            return False
        user = IBSUserInfo.objects.get(user=user_id)
        ibs = IBSManager()
        # expire = ibs.get_expire_date(user.user.username)
        # expire = parse_date_from_str_to_julian(expire)
        # if expire.date() <= datetime.today().date():
        res = ibs.temp_charge(user.user.username)
        # else:
            # ibs.temp_charge()
            # res = ibs.change_credit(float(get_config_value('ibs_temp_charge_amount', 700)),
            #                         user.user.username,
            #                         replace_credit=True)

        if res:
            fr = FreeTrafficLog()
            fr.user_id = user_id
            fr.recharger = User.objects.get(pk=requester_id)
            fr.datetime = datetime.today()
            fr.save()
            fire_event(3720, fr, None, int(user_id))
            return True
        return False
    except Exception as e:
        print e.args[1]
        return False
Exemple #8
0
def delete_traffic(request):
    if request.method == 'GET':
        t = request.GET.get('t')
        if not validate_integer(t):
            return redirect(reverse(view_all_traffics))
        try:
            traffic = Traffic.objects.get(pk=t)
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
        return render(request, 'traffic/DeleteTraffic.html',
                      {'traffic': traffic})
    elif request.method == 'POST':
        tid = request.POST.get('tid', 'empty')
        if not validate_integer(tid):
            return redirect(reverse(view_all_traffics))
        try:
            d_t = Traffic(pk=tid)
            d_t.is_deleted = True
            d_t.save()
            fire_event(2603, d_t, None, request.user.pk)
            # insert_new_action_log(request, None, _('package deleted') + ' : ' + d_t.name)
            return redirect(reverse(view_all_traffics))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #9
0
def post(request):
    if request.POST.get('cancel'):
        return redirect(reverse(show_all_groups))
    # sp = request.POST.get('rbPerm', -1)
    g_name = request.POST.get('txtName', -1)
    # g_des = request.POST.get('txtDescription', -1)
    g_id = request.POST.get('uid', -1)
    if g_id == '1':
        return redirect(reverse(show_all_groups))
    update_mode = False
    insert_new_action_log(request, None, _('create or update groups'))
    if g_name is -1:
        return HttpResponseBadRequest(_('no group has selected'))
    try:
        if validate_integer(g_id):
            update_mode = True
        if update_mode:
            g = Group.objects.get(pk=g_id)
        else:
            g = Group()
        g.name = g_name
        g.save()
        fire_event(1527, g, None, request.user.pk)
        return redirect(reverse(show_all_groups))
    except Exception as e:
        print e.message
        return render(request, 'errors/ServerError.html')
Exemple #10
0
def delete_document(request):
    if request.method == 'GET':
        d = request.GET.get('d')
        if not d:
            return redirect(reverse(manage_uploads))
        try:
            doc = UserFiles.objects.get(pk=d)
            return render(request, 'user/documents/DeleteDocument.html', {'doc': doc})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        d = request.POST.get('d')
        cancel = request.POST.get('btnCancel')
        if cancel:
            return redirect(reverse(manage_uploads))
        if not d:
            return redirect(reverse(manage_uploads))
        try:
            f = UserFiles.objects.get(pk=d)
            fn = f.filename
            f.delete()
            if exists(fn):
                os.remove(fn)
            fire_event(4050, None, d, request.user.pk)
            return redirect(reverse(manage_uploads))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #11
0
def delete_discount(request):
    delete_discount.__cid__ = 4361
    if request.method == 'GET':
        d = request.GET.get('d')
        if not validate_integer(d):
            return redirect(reverse(view_all_discounts))
        try:
            dis = IBSServiceDiscount.objects.get(pk=d)
            return render(request,
                          'finance/discount/service/DeleteDiscount.html',
                          {'d': dis})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        d = request.POST.get('d')
        if request.POST.get('cancel'):
            return redirect(reverse(view_all_discounts))
        if not validate_integer(d):
            return redirect(reverse(view_all_discounts))
        try:
            dis = IBSServiceDiscount.objects.get(pk=d)
            dis.is_deleted = True
            dis.save()
            fire_event(delete_discount, dis, None, request.user.pk)
            # send_to_dashboard(4361, request.user.pk)
            return redirect(reverse(view_all_discounts))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #12
0
def create_traffic_invoice(request):
    user = request.user
    if request.method == 'GET':
        sid = request.GET.get('t')
        if request.user.is_staff or request.user.is_superuser:
            uid = request.GET.get('u')
        else:
            uid = user.pk
        if not validate_integer(sid):
            return redirect('/user/nav/?uid=%s' % uid)
        if not validate_user(uid, request.RSL_ID):
            return redirect('/user/nav/?uid=%s' % uid)
        try:
            x = InvoiceGen(Traffic.objects.get(pk=sid), 2, uid=uid)
            x.calculate()
            if not x.get_is_done():
                fire_event(10231, User.objects.get(pk=uid))
                return redirect('/')
            extra_data = x.get_extra_data()
            return render(
                request, 'finance/TrafficInvoice.html', {
                    's': x.get_service(),
                    'tax': extra_data.get('tax'),
                    'price': x.get_final_price(),
                    'u': uid,
                    'discounted_price': extra_data.get('discount_price'),
                    'extra_amount': extra_data.get('extra_package'),
                    'base_service_price': x.get_base_price(),
                    'debit': extra_data.get('debit')
                })
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        uid = request.POST.get('uid', 'INVALID')
        sid = request.POST.get('sid', 'INVALID')
        if not validate_user(uid, request.RSL_ID) or not validate_integer(sid):
            return redirect('/user/nav/?uid=%s' % uid)
        if not user.is_staff:
            uid = user.pk
        try:
            x = InvoiceGen(Traffic.objects.get(pk=sid), 2, uid=uid)
            x.calculate()
            if not x.get_is_done():
                fire_event(10231, User.objects.get(pk=uid))
                return redirect('/')
            f = x.get_invoice()
            f.save()
            # PackageInvoiceCreatedNotify().send(user_id=uid, invoice_id=f.pk, create_time=f.create_time)
            if request.user.is_staff:
                return redirect(reverse(show_all_invoices) + '?u=%s' % uid)
            else:
                return redirect(reverse(e_pay_invoice) + '?f=' + str(f.pk))
        except Exception as e:
            print e.args[0]
            return render(request, 'errors/ServerError.html')

    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #13
0
def delete_pop_site(request):
    pop = get_pop_site(request.GET.get('pk'))
    if not pop:
        return send_error(request, _('invalid item'))
    pop.is_deleted = True
    pop.save()
    fire_event(6010002, pop, None, request.user.pk)
    return HttpResponse(pop.pk)
Exemple #14
0
def edit_notify_config(request):
    if request.method == 'GET':
        n = request.GET.get('n')
        try:
            if not NotifySettings.objects.filter(pk=n).exists():
                return redirect(reverse(notify_configuration))
            nc = NotifySettings.objects.get(pk=n)
            return render(request, 'notify/EditConfig.html', {'c': nc})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        n = request.POST.get('n')
        if not validate_integer(n):
            return redirect(reverse(notify_configuration))
        email_text = request.POST.get('et')
        email_enabled = request.POST.get('ce')
        sms_text = request.POST.get('st')
        sms_enabled = request.POST.get('se')
        inbox_text = request.POST.get('it')
        inbox_enable = request.POST.get('ie')
        if email_enabled:
            if not validate_empty_str(email_text):
                return render(request, 'errors/CustomError.html', {'error_message': _('please enter email text')})
        if sms_enabled:
            if not validate_empty_str(sms_text):
                return render(request, 'errors/CustomError.html', {'error_message': _('please enter sms text')})
        if inbox_enable:
            if not validate_empty_str(inbox_text):
                return render(request, 'errors/CustomError.html', {'error_message': _('please enter inbox text')})
        try:
            ns = NotifySettings.objects.get(pk=n)
            if email_enabled:
                ns.email_enabled = True
                ns.mail_text = email_text
            else:
                ns.email_enabled = False
            if sms_enabled:
                ns.sms_enabled = True
                ns.sms_text = sms_text
            else:
                ns.sms_enabled = False
            if inbox_enable:
                ns.inbox_enabled = True
                ns.inbox_text = inbox_text
            else:
                ns.inbox_enabled = False
            ns.save()
            fire_event(5233, ns, None, request.user.pk)
            return redirect(reverse(notify_configuration))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #15
0
def post(request):
    fid = request.POST.get('f', 'invalid')
    if not validate_integer(fid):
        return redirect(reverse(show_all_invoices))
    try:
        f = Invoice.objects.get(pk=fid)
        f.is_deleted = True
        fire_event(4202, f)
        f.save()
        return redirect(reverse(show_all_invoices))
    except Exception as e:
        print e.message
        return render(request, 'errors/ServerError.html')
Exemple #16
0
def send_new_notification(request):
    if request.method == 'GET':
        if len(request.GET) < 1:
            return redirect(reverse(search_users))
        data = build_params_by_get(request.GET)
        users = advanced_search_users(**data)
        res = init_pager(users, 15, request.GET.get('nx'), 'users',
                         {'show_res': True}, request)
        return render(request, 'notify/SendNewMessage.html', res)
    elif request.method == 'POST':
        if not request.GET:
            return redirect('/')
        data = build_params_by_get(request.GET)
        users = advanced_search_users(**data)
        if request.POST.get('gift'):
            add_days = request.POST.get('ad')
            extra_package = request.POST.get('pa')
            add_days_for_limited = request.POST.get('sfl')
            if not validate_integer(add_days):
                add_days = 0
            if not validate_integer(extra_package):
                extra_package = 0
            if not add_days_for_limited:
                add_days_for_limited = False
            else:
                add_days_for_limited = True
            send_gift_for_users.delay(users, int(add_days), int(extra_package),
                                      add_days_for_limited)
        else:
            inbox = request.POST.get('box') is not None
            sms = request.POST.get('s') is not None
            mail = request.POST.get('e') is not None
            use_template = request.POST.get('t') is not None
            msg = request.POST.get('msg')
            if not (inbox or sms or mail):
                return render(
                    request, 'errors/CustomError.html',
                    {'error_message': _('please select a notify type')})
            if not msg:
                return render(
                    request, 'errors/CustomError.html',
                    {'error_message': _('please enter a message for users')})
            fire_event(5267, None, None, request.user.pk)
            for u in users:
                if use_template:
                    send_from_template.delay(u.pk, 10, otx=msg)
                else:
                    send_notifications(u.pk, msg, sms, mail, inbox)
        return redirect(reverse(show_all_notifications))
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #17
0
def assign_group(request):
    if request.method == 'GET':
        user = request.GET.get('u')
        action = request.GET.get('a')
        uid = request.GET.get('uid')
        gid = request.GET.get('gid')

        if action == 'a':
            if not uid and not gid:
                return redirect(reverse(search_users))
            try:
                u = User.objects.get(pk=uid)
                g = Group.objects.get(pk=gid)
                u.groups.add(g)
                u.save()
                fire_event(3141, u, g.name, request.user.pk)
            except Exception as e:
                print e.message
                # log.error(e.message)
                return render(request, 'errors/ServerError.html')
        elif action == 'b':
            if not uid and not gid:
                return redirect(reverse(search_users))
            try:
                u = User.objects.get(pk=uid)
                g = Group.objects.get(pk=gid)
                u.groups.remove(g)
                u.save()
                fire_event(4212, u, g.name, request.user.pk)
            except Exception as e:
                print e.message
                return render(request, 'errors/ServerError.html')
        if user is not None:
            try:
                u = User.objects.get(username=user)
                insert_new_action_log(request, u.pk, _('assign group to user'))
                joined_groups = u.groups.all().values_list('id', flat=True)
            except Exception as e:
                print e.message
                return HttpResponseBadRequest(_('user name is invalid'))
        elif uid is not None:
            u = User.objects.get(pk=uid)
            joined_groups = u.groups.all().values_list('id', flat=True)
        else:
            return redirect(reverse(search_users))
        return render(request, 'user/AssignAGroup.html', {'username_value': u.username,
                                                          'userid_value': u.pk,
                                                          'groups': Group.objects.all(),
                                                          'joined_groups': joined_groups})
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #18
0
def add_pop_site(request):
    name = request.POST.get('n')
    description = request.POST.get('d')
    if not name:
        return send_error(request, _('please enter name'))
    if not description:
        return send_error(request, _('please enter description'))
    if PopSite.objects.filter(name__iexact=name).exists():
        return send_error(request, _('item exists'))
    p = PopSite()
    p.name = name
    p.description = description
    p.save()
    fire_event(6010001, p, None, request.user.pk)
    return HttpResponse('%s' % p.pk)
Exemple #19
0
def create_department(request):
    if request.method == 'GET':
        did = request.GET.get('d')
        try:
            groups = Group.objects.all()
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
        if validate_integer(did):

            try:
                department = HelpDepartment.objects.get(pk=did)
                return render(request, 'help_desk/CreateDepartment.html', {
                    'dep': department,
                    'groups': groups
                })
            except Exception as e:
                print e.message
                return render(request, 'errors/ServerError.html')
        return render(request, 'help_desk/CreateDepartment.html',
                      {'groups': groups})
    elif request.method == 'POST':
        gid = request.POST.get('slGroups', 'Invalid')
        name = request.POST.get('txtName')
        d = request.POST.get('d')
        if not validate_integer(gid) or gid == '-1':
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('no group selected')})
        if not validate_empty_str(name):
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('enter a name please')})
        try:
            if validate_integer(d):
                h = HelpDepartment.objects.get(pk=d)
            else:
                h = HelpDepartment()
            h.group = Group.objects.get(pk=gid)
            h.department_name = name
            # insert_new_action_log(request, None, _('create or update help department') + ' :' + name)
            h.save()
            fire_event(3617, h, None, request.user.pk)
            return redirect(reverse(show_all_departments))
        except DBRecordExist:
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('the department name is exist')})
        except DBInsertException as e:
            print e.message
            return render(request, 'errors/ServerError.html')
Exemple #20
0
def toggle_lock_personnel_user(request):
    if request.method == "GET":
        uid = request.GET.get('u')
        if not validate_integer(uid):
            return redirect('/')
        if not User.objects.filter(pk=uid).exists():
            return redirect('/')
        if request.user.pk == int(uid):
            return redirect('/user/nav/?uid=%s' % uid)
        u = User.objects.get(pk=uid)
        u.is_active = not u.is_active
        u.save()
        fire_event(5224, u, None, request.user.pk)
        return redirect('/user/nav/?uid=%s' % uid)
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #21
0
def accept_document(request):
    accept_document.__cid__ = 2011001
    if request.method == 'GET':
        doc = request.GET.get('d')
        if not doc:
            return redirect(reverse(manage_uploads))
        try:
            d = UserFiles.objects.get(pk=doc)
            d.approved = True
            d.save()
            fire_event(accept_document, d, None, request.user.pk)
            return redirect(reverse(manage_uploads))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
def manage_group_routing(request):
    """

    @param request:
    @return:
    @type request: django.core.handlers.wsgi.WSGIRequest
    """
    if request.method != 'GET':
        return render(request, 'errors/AccessDenied.html')
    action = request.GET.get('a')
    try:
        banks = Banks.objects.all()  # get_banking_gateways(True)
        if action == 'a':
            bank_id = request.GET.get('b')
            price_list = request.GET.get('p')
            if not validate_integer(bank_id):
                return render(request, 'errors/CustomError.html',
                              {'error_message': _('invalid bank')})
            if not validate_integer(price_list):
                return render(request, 'errors/CustomError.html',
                              {'error_message': _('invalid price list')})

            if not ServiceGroups.objects.filter(pk=price_list).exists():
                return redirect(reverse(service_group_management))
            lst_ids = banks.values_list('internal_value', flat=True)
            if not int(bank_id) in lst_ids:
                return redirect(reverse(manage_group_routing))
            if not ServiceGroupRouting.objects.filter(
                    group=price_list).exists():
                plr = ServiceGroupRouting()
            else:
                plr = ServiceGroupRouting.objects.get(group=price_list)
            plr.group = ServiceGroups.objects.get(pk=price_list)
            plr.bank = bank_id
            plr.save()
            fire_event(4357, plr, None, request.user.pk)
        # routing = PriceListRouting.objects.all()
        prices = ServiceGroups.objects.filter(is_deleted=False)
        return render(request, 'finance/groups/AssignRouting.html', {
            'banks': banks,
            'routing': prices
        })
    except Exception as e:
        print e.args[0]
        return render(request, 'errors/ServerError.html')
Exemple #23
0
def e_pay_invoice(request):
    if request.method == 'GET':
        invoice = validate_invoice(request.GET.get('f'))
        if not invoice:
            return redirect(reverse(show_all_invoices))
        try:
            return render(request, 'finance/payment/EPayment.html',
                          {'f': invoice})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        invoice = validate_invoice(request.POST.get('f'))
        if not invoice:
            return redirect(reverse(show_all_invoices))
        if request.POST.get('db') == '1':
            pi = PayInvoice(invoice=invoice.pk,
                            price=0,
                            use_discount=False,
                            comment=_('auto payment and charge'),
                            is_online=False,
                            ref_code='-',
                            is_system=True,
                            request=request)
            if pi.pay().get_invoice():
                pi.commit()
            return redirect(reverse(show_all_invoices))
        try:
            bank = invoice.user.fk_user_service_group_user.get(
            ).service_group.fk_service_group_routing_group.get().bank
        except Exception:
            bank = 1
        if bank == 1:
            return redirect(reverse(pay_invoice) + '?f=%s' % invoice.pk)
        elif bank == 2:
            return redirect(
                reverse(parsian_pay_invoice) + '?f=%s' % invoice.pk)
        elif bank == 3:
            return redirect(reverse(pasargad_payment) + '?f=%s' % invoice.pk)
        else:
            fire_event(5137, invoice.pk)
            return redirect(reverse(show_all_invoices))
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #24
0
def create_ticket(request):
    if request.method == 'GET':
        try:
            dep = HelpDepartment.objects.all()
            return render(request, 'help_desk/CreateTicket.html', {'dep': dep})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        uid = request.user.pk
        description = request.POST.get('description')
        dep = request.POST.get('slDepartment')
        title = request.POST.get('txtTitle')
        if not validate_empty_str(description):
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('please enter description')})
        if not validate_empty_str(title):
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('please enter title')})
        if not validate_integer(dep):
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('please select department')})
        hd = HelpDesk()
        hd.department = HelpDepartment.objects.get(pk=dep)
        hd.state = HelpDeskState.objects.get(value=0)
        hd.title = title
        hd.user = request.user
        hd.create_time = datetime.today()
        try:
            hd.save()
            t = Ticket()
            t.description = description
            t.help_desk = hd
            t.time = datetime.today()
            t.save()
            fire_event(3411, t, None, request.user.pk)
            HelpDeskTicketCreated().send(user_id=uid, title=hd.title, pk=hd.pk)
            return redirect(reverse(show_all_tickets))
        except Exception as e:
            print '0x500'
            print e.args[1]
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #25
0
def install_bank_api(bank_identifier):
    """
    Install Bank api to DB
    @param bank_identifier: The bank identifier
    @return:
    """
    try:
        bgw = get_banking_gateways()
        for b in bgw:
            if b.get('identifier') == int(bank_identifier):
                if Banks.objects.filter(
                        internal_value=bank_identifier).exists():
                    bk = Banks.objects.get(internal_value=bank_identifier)
                else:
                    bk = Banks()
                    bk.internal_value = int(bank_identifier)
                bk.name = b.get('name')
                bk.save()
                if BankProperties.objects.filter(bank=bk.pk).exists():
                    bpr = BankProperties.objects.filter(bank=bk.pk)
                    old_names = bpr.values_list('name', flat=True)
                    for p2 in b.get('properties'):
                        if p2 not in old_names:
                            bpr_x = BankProperties()
                            bpr_x.name = p2
                            bpr_x.bank = bk
                            bpr_x.save()
                else:
                    # transaction.set_autocommit(False)
                    for p in b.get('properties'):
                        bpr = BankProperties()
                        bpr.bank = bk
                        bpr.name = p
                        bpr.save()
                    # transaction.commit()
                    # transaction.set_autocommit(True)
                fire_event(6005, bk, None, 1)
                return True
        return False
    except Exception as e:
        print e.message
        # print 'ERROR HERE'
        return False
Exemple #26
0
def add_new_problem(request):
    if request.method == 'GET':
        p = request.GET.get('p')
        # insert_new_action_log(request, None, _('view problems'))
        if p is None:
            return render(request, 'help_desk/call/AddProblems.html')
        try:
            problem = UserProblems.objects.get(pk=p)
            return render(request, 'help_desk/call/AddProblems.html',
                          {'problem': problem})
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        pid = request.POST.get('p', None)
        short_text = request.POST.get('txtShort')
        description = request.POST.get('txtDescription')
        if not short_text:
            return render(
                request, 'errors/CustomError.html',
                {'error_message': _('please enter short description')})
        if not description:
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('please enter description')})
        if not pid:
            up = UserProblems()
        else:
            if UserProblems.objects.filter(pk=int(pid)).exists():
                up = UserProblems.objects.get(pk=int(pid))
            else:
                return render(request, 'errors/ServerError.html')
        up.description = description
        up.short_text = short_text
        try:
            up.save()
            fire_event(3142, up, None, request.user.pk)
            return redirect(reverse(view_all_problems))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #27
0
def delete_help_department(request, **k):
    if request.method == 'GET':
        d = request.GET.get('d')
        if not d:
            return redirect(k['back'])
        hlp = HelpDepartment.objects.get(pk=d)
        return render(request, 'help_desk/DeleteDepartment.html', {'dep': hlp})
    elif request.method == 'POST':
        if request.POST.get('cancel'):
            return redirect(reverse(show_all_departments))
        d = request.POST.get('d')
        if not d:
            return redirect(reverse(show_all_departments))
        try:
            HelpDepartment.objects.get(pk=d).delete()
            fire_event(4020, None, str(d), request.user.pk)
            return redirect(reverse(show_all_departments))
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #28
0
def pay_invoice(request):
    if request.method == 'GET':
        fid = request.GET.get('f')
        if not validate_integer(fid):
            return redirect(reverse(show_all_invoices))
        try:
            f = Invoice.objects.get(pk=fid)
            if f.is_paid:
                fire_event(4163, f, None, None)
                # send_to_dashboard(4163, f.user_id, None)
                return redirect(reverse(show_all_invoices))
            data = BankProperties.objects.filter(
                bank__internal_value=identifier)
            terminal_id = long(data.get(name=properties[2]).value)
            bank_username = data.get(name=properties[0]).value
            bank_password = data.get(name=properties[1]).value
            bml = BMLPaymentAPI(bank_username, bank_password, terminal_id)
            # order_id = long(f.pk)
            price = long(f.price - f.debit_price) * 10  # rial correction
            call_back = str(
                read_config(name='login_base_address') + 'factor/mrt/')
            error_counter = 0
            f.comment = _('bank mellat payment')
            f.save()
            while error_counter < 10:
                t = InvoicePaymentTracking()
                t.invoice = f
                t.start_time = datetime.today()
                t.end_time = datetime.now()
                t.save()
                res = bml.request_pay_ref(long(t.pk), price, call_back, '')
                if res:
                    t.initial_res = res
                    t.save()
                    # send_to_dashboard(5727, f.user_id)
                    fire_event(5727, t, None, None)
                    # l.info("Got the token from bank : %s" % res)
                    return render(
                        request, 'finance/payment/mellat/Payment.html', {
                            'invoice': f,
                            'rid': res,
                            'action_page': bml.get_payment_address()
                        })
                else:
                    error_counter += 1
                    t.is_success = False
                    t.end_time = datetime.today()
                    t.final_res = 'INIT ERROR'
                    continue
            # send_to_dashboard(5505, f.user_id)
            fire_event(5505, f, None, None)
            return redirect(reverse(show_all_invoices))
        except Exception as e:
            em = " ".join(e.args)
            print("Unable to complete payment request : %s" % em)
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')
Exemple #29
0
def delete_tower_problem(request):
    ia = check_ajax(request)
    if request.method == 'GET':
        d = request.GET.get('d')
        if not validate_integer(d):
            if ia:
                return HttpResponseBadRequest(_('invalid tower id'))
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('invalid tower id')})
        if not TowerProblemReport.objects.filter(pk=d).exists():
            if ia:
                return HttpResponseBadRequest(_('no such tower found'))
            return render(request, 'errors/CustomError.html',
                          {'error_message': _('no such tower found')})
        data = TowerProblemReport.objects.get(pk=d)
        data.is_deleted = True
        data.save()
        fire_event(4010005, data, None, request.user.pk)
        if ia:
            return HttpResponse('200')
        return redirect(reverse(view_towers))
    if ia:
        return HttpResponseBadRequest(_('invalid method'))
    return redirect(reverse(view_towers))
Exemple #30
0
def parsian_pay_invoice(request):
    if request.method == 'GET':
        fid = request.GET.get('f')
        if not validate_integer(fid):
            return redirect(reverse(show_all_invoices))
        try:
            f = Invoice.objects.get(pk=fid)
            if f.is_paid:
                fire_event(4163, f, None, None)
                return redirect(reverse(show_all_invoices))
            pin = BankProperties.objects.filter(
                bank__internal_value=identifier).get(name=properties[0]).value
            pb = BPPaymentAPI(pin=pin)
            tracker = InvoicePaymentTracking()
            tracker.invoice = f
            tracker.start_time = datetime.today()
            tracker.end_time = datetime.today()
            tracker.save()
            order_id = int(tracker.id)
            price = int(f.price)
            # call_back = str(bs.objects.get(name='base_address').value + reverse(parsian_post_back))
            call_back = str('http://onlinepayment.i-net.ir/' +
                            reverse(parsian_post_back))
            res = pb.request_pay_ref(order_id, price * 10, call_back)
            f.comment = _('bank parsian payment')
            # f.ref_number = res[1]
            # tracker.initial_res = str(res[1])
            tracker.save()
            f.save()

            if res[0] == 0:
                # tracker.bank_res_code = res[1]
                tracker.initial_res = '0'
                tracker.final_res = str(res[1])
                tracker.save()
                fire_event(5727, tracker, None, None)
                return redirect(pb.get_payment_address() + '?au=%s' % res[1])
            # tracker.result = res[0]
            # tracker.save()
            tracker.is_success = False
            tracker.end_time = datetime.today()
            fire_event(5505, f, None, None)
            return redirect(reverse(show_all_invoices) + '?pk=%s' % f.pk)
        except Exception as e:
            print e.args[1]
            return render(request, 'errors/ServerError.html')
    else:
        return render(request, 'errors/AccessDenied.html')