-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathviews.py
136 lines (86 loc) · 4.22 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
from django.http import JsonResponse, HttpResponse
from django_ratelimit.decorators import ratelimit
from django.shortcuts import render
from django.utils import timezone
from v1 import BUSINESS_TEXT as btex
from v1.models import Colab, Number
from v1.forms import ColabForm
from v1 import utils
from openpyxl import Workbook
def handle_sms(request):
phonenumber = request.GET.get("from") # Example : 9148387871
text = request.GET.get("body")
if text == '1':
if utils.number_is_new(phonenumber):
utils.new_number_row(phonenumber) # save number in db
utils.send_sms_new_user('0'+phonenumber) # send welcome sms to user
else:
utils.send_sms_duplicate_number('0'+phonenumber) # this function does nothing
else:
pass # no reaction for anything else only '1'
msg = "Parsa NGO" # This text is only here to keep the api-webhook working
status_msg = 'ok'
response = JsonResponse({'status' : status_msg, 'message' : msg}, status=200)
return response
@ratelimit(key='ip', rate='5/m')
def index_page(request):
if request.method == "POST":
form = ColabForm(request.POST)
if form.is_valid():
# If DB considers data as valid just check phone number like this ->
if not utils.validate_phonenumber(form.cleaned_data['number']):
return render(request, "reserve.html", {'msg' : btex.invalid_pnumber_msg})
if not utils.validate_code_melli(form.cleaned_data['code_melli']):
return render(request, "reserve.html", {'msg' : btex.invalid_cmelli_msg})
if utils.number_is_new(form.cleaned_data['number'][1:]):
return render(request, "reserve.html", {'msg' : btex.unreg_number_msg})
if not utils.colab_number_is_new(form.cleaned_data['number']):
return render(request, "reserve.html", {'msg' : btex.duplicate_colab_msg})
try:
utils.new_colab_row(fullname=form.cleaned_data['fullname'],
number=form.cleaned_data['number'],
code_melli=form.cleaned_data['code_melli'])
except:
return render(request, "reserve.html", {'msg' : btex.simple_error_msg})
return render(request, "reserve.html", {'msg' : btex.ok_msg})
else:
form = ColabForm()
return render(request, "index.html", {"form": form})
@ratelimit(key='ip', rate='5/m')
def custom_404(request, exception):
return render(request, '404.html', status=404)
@ratelimit(key='ip', rate='5/m')
def testt_handler(request):
return render(request, 'reserve.html', {'msg' : btex.wrong_entry_to_res})
def export_colabs(request):
# Query the database to get the data
numbers_queryset = Colab.objects.all()
# Create a new workbook and select the active sheet
workbook = Workbook()
sheet = workbook.active
# Add headers to the sheet
sheet['A1'] = 'Number'
sheet['B1'] = 'fullname'
sheet['C1'] = 'code_melli'
# Add data to the sheet
for row_num, number in enumerate(numbers_queryset, start=2):
sheet.cell(row=row_num, column=1, value=number.number)
sheet.cell(row=row_num, column=2, value=number.fullname)
sheet.cell(row=row_num, column=3, value=number.code_melli)
# Create a response object
response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=numbers.xlsx'
# Save the workbook content to the response
workbook.save(response)
return response
def export_numbers(request):
numbers_queryset = Number.objects.all()
workbook = Workbook()
sheet = workbook.active
sheet['A1'] = 'Number'
for row_num, number in enumerate(numbers_queryset, start=2):
sheet.cell(row=row_num, column=1, value=number.number)
response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=numbers.xlsx'
workbook.save(response)
return response