예제 #1
0
파일: export.py 프로젝트: svabis/db
def subscription_history_csv(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get(id=c_id)

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="' + str(
        c_id) + '.csv"'

    writer = csv.writer(response)
    writer.writerow(['locker_nr', 'check_in_time', 'check_out_time'])

    # HISTORY
    try:
        data = Skapji_history.objects.filter(client=client).order_by(
            '-checkin_time'
        )  #.values_list('number', 'checkin_time', 'checkout_time')
        for d in data:
            writer.writerow([
                str(d.number),
                d.checkin_time.strftime("%Y-%m-%d %H:%M"),
                d.checkout_time.strftime("%Y-%m-%d %H:%M")
            ])
    except:
        pass

    return response
예제 #2
0
def locker_checkout(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get( id = c_id )

    try:
        locker = Skapji.objects.get( client = client )
        new_hist = Skapji_history( number = locker.number, locker_type = locker.locker_type, client = locker.client, checkin_time = locker.checkin_time )
        new_hist.save()
        locker.delete()

    except MultipleObjectsReturned:
       # Gļux --> Klients iečekots vairākos skapīšos
        locker = Skapji.objects.filter( client = client )
        new_hist = Skapji_history( number = locker[0].number, locker_type = locker[0].locker_type, client = locker[0].client, checkin_time = locker[0].checkin_time )
        new_hist.save()
        for l in locker:
            l.delete()

    except:
        pass

    return redirect ('/')
예제 #3
0
파일: export.py 프로젝트: svabis/db
def history_xls(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get(id=c_id)

    response = HttpResponse(content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="' + str(
        c_id) + '.xls"'

    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet('Vēsture')

    # Sheet header, first row
    row_num = 0

    font_style = xlwt.XFStyle()
    font_style.font.bold = True

    columns = ['locker_nr', 'check_in_time', 'check_out_time']

    for col_num in range(len(columns)):
        ws.write(row_num, col_num, columns[col_num], font_style)

    # Sheet body, remaining rows
    font_style = xlwt.XFStyle()

    # THIS MOMENT
    try:
        data = Skapji.objects.get(client=client)
        ws.write(1, 0, str(data.number), font_style)
        ws.write(1, 1, data.checkin_time.strftime("%Y-%m-%d %H:%M"),
                 font_style)
        row_num += 1
    except:
        pass

# HISTORY
    rows = Skapji_history.objects.filter(
        client=client).order_by('-checkin_time').values_list(
            'number', 'checkin_time', 'checkout_time')
    for row in rows:
        row_num += 1
        for col_num in range(len(row)):
            if isinstance(row[col_num], datetime):
                ws.write(row_num, col_num,
                         row[col_num].strftime("%Y-%m-%d %H:%M"), font_style)
            else:
                ws.write(row_num, col_num, row[col_num], font_style)

    wb.save(response)
    return response
예제 #4
0
def edit_client(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    args.update(csrf(request))  # ADD CSRF TOKEN
    # Settings
    args['card_string'] = Settings.objects.get(key="card string").value

    # Edited form POST
    if request.POST:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get(id=c_id)
        form = KlientsForm(request.POST, request.FILES, instance=client)

        if form.is_valid():
            form.save()
            response = redirect("/")
            response.set_cookie(key='edit_client', value="True", max_age=3)
            return response
        else:
            args['form'] = form
            args['client'] = client
            return render_to_response('clients_edit_client.html', args)

# LOAD ACTIVE CLIENT FROM COOKIES
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            client = Klienti.objects.get(id=c_id)
            args['client'] = client

            args['bl_data'] = Blacklist.objects.filter(bl_client=client)

            form = KlientsForm(instance=client)
            args['form'] = form

            args['active_tab_3'] = True

            try:
                args['deposit_amount'] = Deposit.objects.filter(
                    d_client=client).order_by('-d_date')[0]
            except:
                args['deposit_amount'] = 0

            f_temp = Abonementi.objects.filter(client=client, ended=False)
            if f_temp.count() == 0:
                args['freeze_disable'] = True
        except:
            pass
    else:
        return redirect("/")

    return render_to_response('clients_edit_client.html', args)
예제 #5
0
파일: choise.py 프로젝트: svabis/db
def subscription(request, back=False):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

# Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        #        if True:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            cli = Klienti.objects.get(id=c_id)
        except:
            cli = False

    args.update(csrf(request))  # ADD CSRF TOKEN

    # "return path" from this view
    if back == "edit":
        args['back'] = "/client/edit/"
    else:
        args['back'] = "/"

    args['abonementi1'] = AbonementType.objects.filter(position=1,
                                                       position1=1,
                                                       available=True)
    args['abonementi2'] = AbonementType.objects.filter(position=1,
                                                       position1=2,
                                                       available=True)
    args['abonementi3'] = AbonementType.objects.filter(position=1,
                                                       position1=3,
                                                       available=True)

    args['special'] = AbonementType.objects.filter(position=3, available=True)

    args['extra'] = AbonementType.objects.filter(extra=True, available=True)

    if cli != False:
        if cli.first:
            args['first_time'] = AbonementType.objects.filter(
                position=4, available=True).exclude(first_time=True)
        else:
            args['first_time'] = AbonementType.objects.filter(position=4,
                                                              available=True)

        if Abonementi.objects.filter(client=cli, ended=False).count() > 0:
            args['vienreiz'] = AbonementType.objects.filter(position=2,
                                                            available=True)
        else:
            args['vienreiz'] = AbonementType.objects.filter(
                position=2, available=True).exclude(position1=0)

    return render_to_response('subscription_choise.html', args)
예제 #6
0
파일: views.py 프로젝트: svabis/db
def clear_id(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    response = redirect ('/')
    response.delete_cookie('active_client')

    response.delete_cookie('edit_client')
    response.delete_cookie('new_client')
    return response
예제 #7
0
파일: in_club.py 프로젝트: svabis/db
def in_club_count(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    data = {}
    data['count'] = Skapji.objects.all().count()
    if args['loged_in'] == True:
        return JsonResponse(data)

    data['count'] = 0
    return JsonResponse(data)
예제 #8
0
파일: in_club.py 프로젝트: svabis/db
def search_by_locker(request, c_id):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    client = Klienti.objects.get(id=c_id)

    response = redirect("/")
    response.set_cookie(key='active_client', value=client.id)
    return response
예제 #9
0
def login(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    args.update(csrf(request))  # encript data
    args['heading'] = "Datubāzes autorizācija"

    if request.POST:  # actions if login Form is submitted
        username = request.POST.get(
            'username', ''
        )  # usermname <= get variable from Form (name="username"), if not leave blank
        password = request.POST.get(
            'password', ''
        )  # password <= get variable from Form (name="password"), if not leave blank
        user = auth.authenticate(
            username=username,
            password=password)  # new variable --> user from auth system

        if user is not None:  # auth return None if this user does not exit, if not then:
            auth.login(request, user)  # authorizate user from Form

            try:
                new_login = Login(event='Ienāca',
                                  user=user,
                                  ip=get_ip(request))
                new_login.save()
            except:
                pass

        # clear COOKIES
            response = redirect('/')
            try:
                response.delete_cookie('active_client')
                response.delete_cookie('edit_client')
                response.delete_cookie('new_client')
                response.delete_cookie('search_client')
# !!!! ADD COOKIES TO BE DELETED ON LOG-IN
            except:
                pass
            return response

        else:  # if user does not exist:
            args['login_error'] = "Lietotājs nav atrasts"
            return render_to_response('login.html', args)

    else:  # actions if activated hyperlink to login Form
        return render_to_response('login.html', args)
예제 #10
0
파일: users.py 프로젝트: svabis/db
def add_user(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    args.update(csrf(request)) # ADD CSRF TOKEN

#    if request.POST:
#        

    return render_to_response ( 'users.html', args )
예제 #11
0
def remove_from_blacklist(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

   # Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            client = Klienti.objects.get( id = c_id )
            if request.POST:
                client.client_blocked = False
                client.save()
        except:
            pass
    return redirect("/client/edit/")
예제 #12
0
파일: main.py 프로젝트: svabis/db
def insurance(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if args['admin'] != True:
        return redirect("/login/")

    args['active_tab_7'] = True
    args['setup_tab_3'] = True

   # Apdrošinātāji
    args['insurance'] = Apdrosinataji.objects.all()

    return render_to_response ( 'settings.html', args )
예제 #13
0
파일: main.py 프로젝트: svabis/db
def settings(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if args['admin'] != True:
        return redirect("/login/")

    args['active_tab_7'] = True
    args['setup_tab_1'] = True

   # Main Settings
    args['settings'] = Settings.objects.all().order_by('key')

    return render_to_response ( 'settings.html', args )
예제 #14
0
파일: main.py 프로젝트: svabis/db
def client_status(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if args['admin'] != True:
        return redirect("/login/")

    args['active_tab_7'] = True
    args['setup_tab_4'] = True

   # Klienti Statusi
    args['status'] = Statusi.objects.all()

    return render_to_response ( 'settings.html', args )
예제 #15
0
파일: users.py 프로젝트: svabis/db
def system_users(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    args.update(csrf(request)) # ADD CSRF TOKEN

    args['active_tab_7'] = True
    args['setup_tab_2'] = True

   # Lietotāji
    args['users'] = User.objects.all()

    return render_to_response ( 'users.html', args )
예제 #16
0
파일: main.py 프로젝트: svabis/db
def main(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    args.update(csrf(request)) # ADD CSRF TOKEN

    args['active_tab_5'] = True

    args['ab'] = AbonementType.objects.filter( available=True ).order_by('title')

    args['today'] = datetime.now()

    return render_to_response ( 'reports_main.html', args )
예제 #17
0
파일: history.py 프로젝트: svabis/db
def subscription_history(request, pageid = 1, back = 0):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    args['back_nr'] = int(back)
    if int(back) == 0:
        args['back'] = "/client/edit/"
    else:
        args['back'] = "/"

    results_per_page = int(Settings.objects.get( key = "search results on page" ).value)

   # Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            cli = Klienti.objects.get( id = c_id )

            data = Abonementi.objects.filter( client = cli ).order_by('-purchase_date')

           # Paginate results
            if int(pageid) < 1: # negative page number --> 404
                return redirect ('/client/edit/')

            pagecount = int(math.ceil( int(data.count()) / float( results_per_page ))) # integer identical to range by count

            if int(pageid) > pagecount and int(pageid) > 1: # pageid exceeds pagecount --> 404
                return redirect ('/client/edit/')

            start_obj = int(pageid) * results_per_page - results_per_page # start from image NR
            end_obj = int(pageid) * results_per_page # end with image NR
            if end_obj > data.count(): # if end NR exceeds limit set it to end NR
                end_obj = data.count()

            args['paginator'] = Paginator( pagecount, pageid )
            args['data'] = data[start_obj:end_obj]

        except:
            pass
    return render_to_response ( 'subscription_history.html', args )
예제 #18
0
def history(request, pageid = 1):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    results_per_page = int(Settings.objects.get( key = "search results on page" ).value)

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get( id = c_id )

    try:
        args['new_data'] = Skapji.objects.get( client = client )
    except:
        pass

    try:
        data = Skapji_history.objects.filter( client = client ).order_by('-checkin_time')

       # Paginate Search results
        if int(pageid) < 1: # negative page number --> 404
            return redirect ('/')

        pagecount = int(math.ceil( int(data.count()) / float( results_per_page ))) # integer identical to range by count

        if int(pageid) > pagecount and int(pageid) > 1: # pageid exceeds pagecount --> 404
            return redirect ('/')

        start_obj = int(pageid) * results_per_page - results_per_page # start from image NR
        end_obj = int(pageid) * results_per_page # end with image NR
        if end_obj > data.count(): # if end NR exceeds limit set it to end NR
            end_obj = data.count()

        args['paginator'] = Paginator( pagecount, pageid )
        args['data'] = data[start_obj:end_obj]
        args['pageid'] = int(pageid)

    except:
        pass
    return render_to_response ( 'lockers_history.html', args )
예제 #19
0
def locker_checkin(request, gender, locker_nr, abon_id):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get( id = c_id )

    try:
       # !!!!! Test if client is not checked in already !!!!!
        locker = Skapji.objects.get( client = client )
    except:
        test = True

        try:
           # !!!!! Test if locker is available !!!!!
            locker = Skapji.objects.get( number = locker_nr, locker_type = str(gender) )
            test = False
            if int( locker_nr ) == 0:
                lockers_zero = Skapji.objects.filter( locker_type = str(gender), number = 0 ).count()
                if lockers_zero < 5:
                    test = True
        except:
            test = True

        if test:
           # !!!!! ABONEMENTA Atkārtots TESTS !!!!!
            check = ActiveSubscription( client )
            if check.exists:
                if check.active.id == int(abon_id):

                    SubscriptionUse( check.active.id )

                    if "search_client" in request.COOKIES:
                        new_checkin = Skapji( number = locker_nr, locker_type = gender, client = client, no_card = True )
                    else:
                        new_checkin = Skapji( number = locker_nr, locker_type = gender, client = client, no_card = False )
                    new_checkin.save()

    return redirect ('/')
예제 #20
0
def ab_cancel(request, ab_id, pageid = 1, back = 0):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    try:
        ab = Abonementi.objects.get( id=int(ab_id) )
        ab.delete()
    except:
        pass

    try:
        return redirect ( 'subscr_hist', back=back, pageid=pageid )
    except:
        return redirect ( 'subscr_hist', back=back )
예제 #21
0
파일: in_club.py 프로젝트: svabis/db
def persons_in_club(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

# LOCKER COLORS FROM SETTINGS
    args['woman_locker_color'] = Settings.objects.get(
        key="woman locker color").value
    args['man_locker_color'] = Settings.objects.get(
        key="man locker color").value

    args['active_tab_4'] = True

    args['data_no_card'] = Skapji.objects.filter(
        no_card=True).order_by('checkin_time')
    args['data'] = Skapji.objects.filter(
        no_card=False).order_by('checkin_time')

    return render_to_response('in_club.html', args)
예제 #22
0
def add_to_blacklist(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

   # Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            client = Klienti.objects.get( id = c_id )
            if request.POST:
                reason = request.POST.get('blacklist_reason', '')

                new_bl = Blacklist( bl_user = args['username'], bl_client = client, bl_data = reason )
                new_bl.save()

                client.client_blocked = True
                client.save()
        except:
            pass
    return redirect("/client/edit/")
예제 #23
0
파일: freeze.py 프로젝트: svabis/db
def subscription_unfreeze(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

# Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        if True:
            #        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            cli = Klienti.objects.get(id=c_id)

            # Unfreeze Klienti object
            cli.frozen = False
            cli.frozen_from = None
            cli.frozen_until = None
            cli.save()

            # today
            today = date.today()

            # Return dates to initial
            freeze = Abonementu_Iesalde.objects.filter(client=cli)

            for f in freeze:
                if f.freeze_from <= today and f.freeze_until >= today:
                    #                    return redirect ("/client/new/")
                    if f.subscr.active:
                        f.subscr.best_before = f.best_before
                    else:
                        f.subscr.activate_before = f.activate_before
                    f.subscr.save()
                    f.delete()
#        except:
#            pass
    return redirect("/")
예제 #24
0
def locker_changer(request, gender, locker_nr):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get(id=c_id)

    try:
        # !!!!! GET Skapji object client is checked in already !!!!!
        locker = Skapji.objects.get(client=client)
        locker.number = locker_nr
        locker.save()
    except:
        pass

    return redirect('/')
예제 #25
0
def new_client(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if args['loged_in'] == False:
        return redirect("/login/")

    args.update(csrf(request))  # ADD CSRF TOKEN
    # Settings
    args['card_string'] = Settings.objects.get(key="card string").value

    # Created form POST
    if request.POST:
        form = KlientsForm(request.POST, request.FILES)

        if form.is_valid():
            #            card_nr = str( request.POST.get('card_nr', '') )
            #            card_nr_array = Klienti.objects.all().exclude( card_nr = "" ).values('card_nr')

            # !!!!!!!!!!!!!!!!!!!!!!!!!!
            # !!!!! CARD TEST HERE !!!!!
            # !!!!!!!!!!!!!!!!!!!!!!!!!!

            new_client = form.save()
            response = redirect("/")
            response.set_cookie(key='active_client', value=new_client.id)
            response.set_cookie(key='new_client', value="True", max_age=3)
            return response
        else:
            args['form'] = form
            return render_to_response('clients_new_client.html', args)

    args['form'] = KlientsForm

    args['active_tab_2'] = True
    return render_to_response('clients_new_client.html', args)
예제 #26
0
파일: views.py 프로젝트: svabis/db
def update_notes(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

   # Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            client = Klienti.objects.get( id = c_id )
            if request.POST:
                new_notes = request.POST.get('notes', '')

                client.notes = new_notes
                client.save()

                response = redirect("/")
                response.set_cookie( key='notes_updated', value="True", max_age=3 )
                return response
        except:
            pass

    return redirect("/")
예제 #27
0
파일: add_deposit.py 프로젝트: svabis/db
def add_deposit(request, back):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)

    if int(back) == 0:
        response = redirect("/client/edit/")
    else:
        response = redirect("/")

# Get Active client from COOKIE
    if "active_client" in request.COOKIES:
        try:
            c_id = int(request.COOKIES.get(str('active_client')))
            client = Klienti.objects.get(id=c_id)
            if request.POST:
                amount = float(
                    request.POST.get('deposit_add', '').split(" ")[1])
                reason = request.POST.get('deposit_reason', '')

                try:
                    last_amount = float(
                        Deposit.objects.filter(
                            d_client=client).order_by('-d_date')[0].d_remain)
                except:
                    last_amount = float(0)

                temp = Deposit(d_user=args['username'],
                               d_client=client,
                               d_reason=reason,
                               d_added=amount,
                               d_remain=last_amount + amount)
                temp.save()
        except:
            pass
    return response
예제 #28
0
파일: deposit.py 프로젝트: svabis/db
def deposit_export(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect(
            Settings.objects.get(key="access denied redirect").value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    args['active_tab_5'] = True
    args['ab'] = AbonementType.objects.filter(available=True).order_by('title')
    args['today'] = datetime.now()

    args.update(csrf(request))  # ADD CSRF TOKEN

    if request.POST:
        # BS Report log
        new_report = Reports(event='Deposit Report', user=args['username'])
        new_report.save()

        deposit_raw_data = Deposit.objects.all().order_by("-d_date")

        response = HttpResponse(content_type='application/ms-excel')
        response[
            'Content-Disposition'] = 'attachment; filename="deposit.xls"'  # DATUMS PIE NOSAUKUMA

        wb = xlwt.Workbook(encoding='utf-8')
        ws = wb.add_sheet('Depozīta atlikumi')

        # Sheet header, first row
        row_num = 0

        font_style = xlwt.XFStyle()
        font_style.font.bold = True

        columns = ['Atlikuma laiks', 'Klienta ID', 'Vārds', 'Uzvārds', 'Summa']

        for col_num in range(len(columns)):
            ws.write(row_num, col_num, columns[col_num], font_style)

    # Sheet body, remaining rows
        font_style = xlwt.XFStyle()

        cli = []

        # Export Data
        for row in deposit_raw_data:
            if row.d_client.id not in cli:
                cli.append(row.d_client.id)
                row_num += 1

                new_time = row.d_date + timedelta(hours=dst(row.d_date))
                ws.write(row_num, 0, new_time.strftime("%Y-%m-%d %H:%M"),
                         font_style)

                ws.write(row_num, 1, row.d_client.id, font_style)
                ws.write(row_num, 2, row.d_client.name, font_style)
                ws.write(row_num, 3, row.d_client.surname, font_style)

                ws.write(row_num, 4, row.d_remain, font_style)

        wb.save(response)
        return response

    return render_to_response('reports_main.html', args)
예제 #29
0
def lockers_export(request):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)
    if args['loged_in'] == False:
        return redirect("/login/")
    if args['admin'] != True:
        return redirect("/login/")

    args['active_tab_5'] = True
    args['ab'] = AbonementType.objects.filter( available=True ).order_by('title')
    args['today'] = datetime.now()

    args.update(csrf(request)) # ADD CSRF TOKEN

    if request.POST:
        start_str = request.POST.get('loc_start', '')
        end_str = request.POST.get('loc_end', '')

       # BS Report log
        new_report = Reports( event='Lockers Report', event_data=start_str + ' ' + end_str, user=args['username'] )
        new_report.save()

       # convert dates from string to datetime
        date_error = False
        try:
            start_date = datetime.strptime( start_str, '%Y-%m-%d').replace(tzinfo=tz)
        except:
            args['loc_start_error'] = True
            date_error = True
        try:
           end_date = datetime.strptime( end_str, '%Y-%m-%d').replace(tzinfo=tz)
        except:
           if end_str != "":
               args['loc_end_error'] = True
               date_error = True

       # dates error
        if date_error == True:
            return render_to_response ( 'reports_main.html', args )

       # set dates
        date_min = datetime.combine(start_date, time.min).replace(tzinfo=tz)
        try:
            date_max = datetime.combine(end_date, time.max).replace(tzinfo=tz)
        except:
            date_max = datetime.combine(start_date, time.max).replace(tzinfo=tz)

        lockers_data = Skapji_history.objects.filter( checkin_time__range=[date_min, date_max] ).order_by('checkin_time')

        response = HttpResponse(content_type='application/ms-excel')
        response['Content-Disposition'] = 'attachment; filename="lockers.xls"' # DATUMS PIE NOSAUKUMA ?

        wb = xlwt.Workbook(encoding='utf-8')
        ws = wb.add_sheet('Apmeklējums')

       # Sheet header, first row
        row_num = 0

        font_style = xlwt.XFStyle()
        font_style.font.bold = True

        columns = ['Ienākšanas laiks', 'Iziešanas laiks', 'Klienta ID', 'Vārds', 'Uzvārds' ]
#                   'Skaits', 'Pilnā cena', 'Cena ar atlaidi', 'No depozīta', 'Dāvanu karte',
#                   'Sedz apdrošināšana', 'Apdrošinātājs', 'Pārskaitījums', 'Gala summa']

        for col_num in range(len(columns)):
            ws.write(row_num, col_num, columns[col_num], font_style)

       # Sheet body, remaining rows
        font_style = xlwt.XFStyle()

       # Export Data
        for row in lockers_data:
            row_num += 1

            new_time = row.checkin_time + timedelta( hours=dst( row.checkin_time ) )
            ws.write(row_num, 0, new_time.strftime("%Y-%m-%d %H:%M"), font_style)

            new_time = row.checkout_time + timedelta( hours=dst( row.checkout_time ) )
            ws.write(row_num, 1, new_time.strftime("%Y-%m-%d %H:%M"), font_style)

            ws.write(row_num, 2, row.client.id, font_style)
            ws.write(row_num, 3, row.client.name, font_style)
            ws.write(row_num, 4, row.client.surname, font_style)

        wb.save(response)
        return response

    return render_to_response ( 'reports_main.html', args )
예제 #30
0
def locker(request, abon_id):
    args = create_args(request)
    if args['access'] == False:
        return redirect (Settings.objects.get( key = "access denied redirect" ).value)

    if args['loged_in'] == False:
        return redirect("/login/")

    if "active_client" in request.COOKIES:
        c_id = int(request.COOKIES.get(str('active_client')))
        client = Klienti.objects.get( id = c_id )
    else:
        redirect ("/")

   # DISABLED LOCKERS
    dml_value = Settings.objects.get( key = "disabled man locker" ).value
    dwl_value = Settings.objects.get( key = "disabled woman locker" ).value
   # convert unicode to string
    dml_value = unicodedata.normalize('NFKD', dml_value).encode('ascii','ignore')
    dwl_value = unicodedata.normalize('NFKD', dwl_value).encode('ascii','ignore')

   # split string to array
    dml = dml_value.split(",")
    dwl = dwl_value.split(",")

   # convert arrays to int
    dml = map(int, dml)
    dwl = map(int, dwl)

    args['dm'] = dml
    args['dw'] = dwl

   # Abonementa id
    args['abon_id'] = int(abon_id)

   # LOCKER COLORS FROM SETTINGS
    args['woman_locker_color'] = Settings.objects.get( key = "woman locker color" ).value
    args['man_locker_color'] = Settings.objects.get( key = "man locker color" ).value

    lockers_filled = []

# !!!!!!!!!!!!!!!!
# !!!!! ZERO !!!!!
# !!!!!!!!!!!!!!!!
    lockers_zero = Skapji.objects.filter( locker_type = client.gender, number = 0 ).count()
    if lockers_zero > 4:
        lockers_filled.append( 0 )
# ----------------

   # get locker numbers in use
    lockers_temp = Skapji.objects.filter( locker_type = client.gender ).exclude( number = 0 )
    for n in lockers_temp:
        lockers_filled.append( int(n.number) )

   # ADD DISABLED LOCKERS
    if client.gender == "V":
        lockers_filled = lockers_filled + dml
    else:
        lockers_filled = lockers_filled + dwl

    lockers = []
   # MALE LOCKERS
    if client.gender == "V":
       for i in range(0, int(Settings.objects.get( key = "man locker count" ).value) + 1 ):
           if i not in lockers_filled:
               lockers.append([i,0])
           else:
               lockers.append([i,1])

   # FEMALE LOCKERS
    else:
       for i in range(0, int(Settings.objects.get( key = "woman locker count" ).value) + 1 ):
           if i not in lockers_filled:
               lockers.append([i,0])
           else:
               lockers.append([i,1])

    args['lockers'] = lockers
    args['gender'] = client.gender
    return render_to_response ( 'locker.html', args )