File size: 17,969 Bytes
b6ca154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
import json
import docx
from docx import Document
import os
import fill_doc
# import languages
from flask import Flask, redirect, url_for, render_template, session
from flask import send_file
from flask_wtf import FlaskForm
from wtforms.fields import DateField
from wtforms.validators import DataRequired
from wtforms import validators, SubmitField, FileField
from flask_wtf import Form
from flask import request
from werkzeug.utils import secure_filename
app = Flask(__name__)
# app.config['SECRET_KEY'] = 'Some_Text'
# app.config['UPLOADED_DOCX_DEST'] = './'
# class Upload(FlaskForm):
#     file = FileField("File")
#     submit = SubmitField("Upload File")
app.static_folder = 'static'

@app.route("/")
def home():
    return render_template("index.html")

@app.route("/downloadfile/")
def files():
    file_name = str(request.args.get("file_name"))
    
    # print(temp_name)
    try:
        return send_file('{}'.format(file_name), attachment_filename=file_name)
    except Exception as e:
        return str(e)

ALLOWED_EXTENSIONS = set(['txt','docx', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])

def allowed_file(filename):
	return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/uploader', methods=['POST'])
def upload_file():
	# check if the post request has the file part
	if 'file' not in request.files:
		resp = {
            "message" : 'No file part in the request',
		    "status_code" : 400
        }
		return resp
	file = request.files['file']
	if file.filename == '':
		resp = {
            "message" : 'No file selected for uploading',
            "status_code": 400
        }
		return resp
	if file and allowed_file(file.filename):
		filename = secure_filename(file.filename)
        #uploaded_filename = str(request.args.get("uploaded_filename"))
		file.save(os.path.join('./templates', filename))
		resp = {
            "message" : 'File successfully uploaded',
		    "status_code" : 201
        }
		return resp
	else:
		resp = {
            "message" : 'Allowed file types are txt, pdf, png, jpg, jpeg, gif',
            "status_code" : 400
        }
		return resp

# @app.route('/uploader', methods = ['GET', 'POST'])
# def upload_file():
#    if request.method == 'POST':
#       f = request.files['file']
#       f.save(secure_filename(f.filename))
#       return 'file uploaded successfully'
  
# Translation, Important Information Extraction, Similar Clause Search, Template Question generation
@app.route("/get")
def index():
    #temp
    st = int(request.args.get('st'))
    responses = request.args.get('ans')
    name = request.args.get('name')
    ans=""
    # new_ans=""
    lang = str(request.args.get('lang'))
    trg = str(request.args.get('trg'))
    trg = lang
    src = str(request.args.get('src'))
    file_name = str(request.args.get('file_name'))
    variables = json.loads(request.args.get('variables'))
    temp = str(request.args.get('temp'))
    new_string = "{{" + temp + "}}"
    variables[new_string] = responses
    inputType = "text"
    #INDIC = ["as", "bn", "gu", "hi", "kn", "ml", "mr", "or", "pa", "ta", "te"]
    if st == -2:
        if responses.lower().find('hindi') != -1:
            lang = 'hi'
        elif responses.lower().find('english') != -1:
            lang = 'en'
        elif responses.lower().find('assamese') != -1:
            lang = 'as'
        elif responses.lower().find('bengali') != -1:
            lang = 'bn'
        elif responses.lower().find('gujarati') != -1:
            lang = 'gu'
        elif responses.lower().find('kannada') != -1:
            lang = 'kn'
        elif responses.lower().find('malyalam') != -1:
            lang = 'ml'
        elif responses.lower().find('marathi') != -1:
            lang = 'mr'
        elif responses.lower().find('oriya') != -1:
            lang = 'or'
        elif responses.lower().find('punjabi') != -1:
            lang = 'pa'
        elif responses.lower().find('tamil') != -1:
            lang = 'ta'
        elif responses.lower().find('telugu') != -1:
            lang = 'te'
        else:
            lang = 'en'
    if st == -1 and (responses.lower().find('drafting') != -1 or responses.lower().find('draft') != -1):
        st = -1
    elif st == -1:
        st = 34
    if st == 0 and responses.lower().find('will') != -1:
        st = 0
    elif st == 0 and responses.lower().find('employer') != -1:
        st = 40
    elif st == 0 and responses.lower().find('employee') != -1:
        st = 81
    elif st == 0 and responses.lower().find('will') == -1:
        st = 24

    if st == 8 and int(responses) > 0 :
        st = 8
    elif st==8 and int(responses) == 0:
        st = 9
    elif st==16 and responses == "No":
        st = 17
    elif st==16 and responses != "No":
        st = 16
    # fileName = name+".csv"
    # f = open(fileName, "a")
    # #f.write(st+"\t")
    # f.write(responses+"\n")
    # f.close()
    
    msgg = "  "
    if st == -2:
        ans = "What do you want to do? (Drafting or Analysis) "
        # new_ans = languages(ans,'en',lang)
    elif st == -1:
        ans = "What do you want to Draft?"
    elif st == 0:
        ans = "What is your name?"  
        msgg = "Please state your full name as is given in your Matriculation Certificate/valid ID proof."
    elif st == 1:
        ans = "What is your date of birth?"
        inputType = "date"
        msgg = "Please select date from the calender"
    elif st == 2:
        ans = "What is your gender?"
        msgg = "Select the gender of the person whose will is being made."
    elif st == 3:
        ans = "What are your preferred pronouns?"
        msgg = '''Select your pronouns. These shall be used as reference to the person whose will is being made, throughout the document.
'''
    elif st == 4:
        ans = "What is your father/mothers’ name?"
        msgg = "Please enter either the name of your father or your mother."
    elif st == 5:
        ans = "What is your marital status?"
        msgg = "Please indicate your marital status."
    elif st == 6:
        ans = "What is your religion?"
        
    elif st == 7:
        ans = "Do you have any children?"
        inputType = "number"
        msgg = "Please state how many children you have. If you do have a child/children, please state their details as required."
    elif st == 8:
        ans = "Write Your Children Details"
        msgg = "Format should be Name of child, Sex of child, Age of child, Address of child for each child"
    elif st == 9:
        ans = "What is your address?"
        msgg = "Please state the address where you are presently residing."
    elif st == 10:
        ans = "Where is your will being executed?"
        msgg = "Please state the name of the place where your will is being executed/signed."
    elif st == 11:
        ans = "What is the date on which your will is being executed?"
        inputType = "date"
        msgg = "Please mention the date on which your will is being executed/signed."
    elif st == 12:
        ans = "Who are your beneficiaries?"
        msgg = "Please state your beneficiaries. Beneficiaries are any and all those persons whom you wish to bequeath your asset/liability to, under this will."
    elif st == 13:
        ans = "Who is the executor of your will?"
        msgg = '''Please state the name and other details of your executor. An executor is a person who will be responsible for ensuring that the terms of your will are followed, including division of assets and liabilities as per your wishes. '''
    elif st == 14:
        ans = "What are the duties of your executor?"
        msgg = "Please select the duties which you would like the executor to observe under your will."
    elif st == 15:
        ans = "Do you want to compensate the executor for disposing of your will?"
    elif st == 16:
        ans = "Write the amount  to compensate the executor for disposing of your will?"
        msgg = "If you would like to compensate the executor, kindly mention the amount."
    elif st == 17:
        ans = "What are your assets?"
        msgg = "Please mention details about all your assets, both immovable and movable, and the details of the person/organization you are bequeathing it to."
    elif st == 18:
        ans = "What are your liabilities?"
        msgg = '''Please mention details about all your liabilities, and the details of the person/organization you are bequeathing it to.
'''
    elif st == 19:
        ans = "Will you appoint a guardian for your minor child?"
    elif st == 20:
        ans = "How would you prefer the disposal of remains?"
        ans = "Please state details about how you would like your remains to be disposed off."
    elif st == 24:
        ans = "When is the deed going to be executed?"
        inputType = "date"
    elif st == 25:
        ans = "Where is the deed going to be executed?"
    elif st == 26:
        ans = "Are you the Donor or the Donee?"
    elif st == 27:
        ans = "Please provide your name, father’s name and address."
    elif st == 28:
        ans = "Please provide the other party’s name, father’s name and address."
    elif st == 29:
        ans = "What is the relationship between the parties?"
    elif st == 30:
        ans = "What type of asset is to be gifted? (Drop down box with options like land, movable property, building, cash in bank account, etc)"
    elif st == 31:
        ans = "Please provide details of the asset to be gifted."
    elif st == 32:
        ans = "What is the value of the asset mentioned above?"
    elif st == 33:
        ans = "Please provide the name and address of the witnesses."
    elif st == 34:
        ans = f'''
        <html>
            <body>
            <h3> Please upload the Document to be Analyzed. </h3>
            <input id="fileupload" type="file" name="fileupload" /> 
            <button id="upload-button" onclick="uploadFile()"> Upload file </button>   
            </body>
        </html>
        '''
    elif st == 35:
        # ans = f'''
        # <html>
        #     <body>
        #     <div class = "form-group">
        #         <label for = "Documents"> Please select the Analysis </label>
        #         <select id = "dropdown" class = "form-control" name = "Documents"
        #         required="">
        #             <option value = "Translation">Translation </option>
        #             <option value = "Important Information Extraction">Important Information Extraction </option>
        #             <option value = "Similar Clause Search">Similar Clause Search </option>
        #             <option value = "Template Question generation">Template Question generation </option>
        #         </select>
        #     </body>
        # </html>
        # '''
        ans = "Please select anyone of this!"
        inputType="select"
    elif st == 21:
        ans = "Other special instructions"
        msgg = "Please mention any other special instructions which you may wish to include in your will."
    elif st == 22:
        file_path = r"C:\Users\Prince Raj\Desktop\BOT\Last Will and Testament.docx"
        assert os.path.isfile(file_path)
        with open(file_path, "r") as f:
            pass
        result_path = name + ".docx"
        # assert os.path.isfile(result_path)
        # with open(result_path, "r") as f:
        #     pass
        # temp_name = result_path
        fill_doc(file_path, result_path, variables)
        # print(temp_name)
        inputType = 'text'
        ans = f'''
        <html>
         <body>
         <a  href="/downloadfile?file_name={result_path}" >{result_path} Download</a>
         </body>
        </html>
        '''
        #name.docx
        inputType = "text"
    elif st == 40:
        ans = "What is the name of the company?"
    elif st == 41:
        ans = "What is the employee code?"
    elif st == 42:
        ans = "What is the employee name?"
    elif st == 43:
        ans = "What is the date of the appointment letter?"
        inputType = "date"
    elif st == 44:
        ans = "What is the date of appointment?"
        inputType = "date"
    elif st == 45:
        ans = "What was the date of interview?"
        inputType = "date"
    elif st == 46:
        ans = "What is the designation?"
    elif st == 47:
        ans = "What is the place of the execution this agreement?"
        #both - needs to be the same
    elif st == 48:
        ans = "What is the date of execution of this agreement?"
        inputType = "date"
    elif st == 49:
        ans = "Company Details - What is the CIN no?"
    elif st == 50:
        ans = "Company Details - What is the PAN no?"
    elif st == 51:
        ans = "Company Details - What is registered office address?"
    elif st == 52:
        ans = "Company Details - What is the name of authorized signatory/director?"
    elif st == 53:
        ans = "Company Details - What is the date of the board resolution?"
    elif st == 54:
        ans = "Which department is employee assigned to?"
    elif st == 55:
        ans = "What is the term?"
    elif st == 56:
        ans = "Who shall the employee report to?"
    elif st == 57:
        ans = "What is the place of posting?"
    elif st == 58:
        ans = "What is the probationary period?"
    elif st == 59:
        ans = "What is the notice period for resignation during probationary period?"
    elif st == 60:
        ans = "What shall be the working hours during the week?"
    elif st == 61:
        ans = "What is the number of casual leave days entitled to the employee?"
    elif st == 62:
        ans = "What is the number of sick days entitled to the employee?"
    elif st == 63:
        ans = "What is the number of public holidays entitled to the employee?"
    elif st == 64:
        ans = "Whom shall the employee report to in case of unforeseen sickness/injury?"
    elif st == 65:
        ans = "Within how many hours is the employee supposed to inform in case of unforeseen sickness/injury?"
    elif st == 66:
        ans = "For how many days of absence does the employee need to submit the self certification form?"
    elif st == 67:
        ans = "For how many days of absence does the employee need to submit a medical certificate signed by a medical practitioner?"
    elif st == 68:
        ans = "What shall be employee’s responsibilities?"
    elif st == 69:
        ans = "What shall be the employee’s obligations?"
    elif st == 70:
        ans = "What shall be the grounds of termination?"
    elif st == 71:
        ans = "What shall be the notice period for the employee to resign?"
    elif st == 72:
        ans = "For how many years shall the employee be bound by confidentiality?"
    elif st == 73:
        ans = "Company Notice Details - What is the name of the designated person?"
    elif st == 74:
        ans = "Company Notice Details - What is the address of designated person?"
    elif st == 75:
        ans = "Company Notice Details - What is the email ID of the designated person?"
    elif st == 76:
        ans = "For how many years shall the employee be bound by non - solicitation and non - compete?"
    elif st == 77:
        ans = "Applicable laws of which place shall apply?"
    elif st == 78:
        ans = "Which courts will have jurisdiction during dispute resolution?"
    elif st == 79:
        with open("employer", "w") as fp:
            json.dump(variables,fp)
        ans = "Thank you for recording your responses!"
    elif st == 81:
        ans = "What is the place of the execution this agreement?"
    elif st == 82:
        ans = "What is the date of execution of this agreement?"
        inputType = "date"
    elif st == 83:
        ans = "Employee Details - What is the name of father of employee?"
    elif st == 84:
        ans = "Employee Details - What is the address of the employee?"
    elif st == 85:
        ans = "Employee Notice Details - What is the name of the employee?"
    elif st == 86:
        ans = "Employee Notice Details - What is the address of the employee?"
    elif st == 87:
        ans = "Employee Notice Details - What is the email ID of the employee?"
    else:
        with open('employer', 'r') as f:
            data = json.load(f)
            q1 = "{{What is the place of the execution this agreement?}}"
            q2 = "{{What is the date of execution of this agreement?}}"
            if data[q1] == variables[q1] and data[q2] == variables[q2]:
                ans = "Responses matched : Success!"
            elif data[q1] != variables[q1] and data[q2] != variables[q2]:
                ans = "Responses did not match --> " + "Employer Response for : " + "What is the place of the execution this agreement? -> " + data[q1] + " and " + "Employee Response for : " + "What is the place of the execution this agreement? -> " + variables[q1] + "\nEmployer Response for " + "What is the date of execution of this agreement? -> "+ data[q2] + " and " + "Employee Response for " + "What is the date of execution of this agreement? -> "+ variables[q2]
            elif data[q1] != variables[q1]:
                ans = "Responses did not match --> " + "Employer Response for : " + "What is the place of the execution this agreement? -> " + data[q1] + " and " + "Employee Response for : " + "What is the place of the execution this agreement? -> " + variables[q1]
            else:
                ans = "Responses did not match --> " + "Employer Response for : " + "What is the date of execution of this agreement? -> "+ data[q2] + " and " + "Employee Response for : " + "What is the date of execution of this agreement? -> "+ variables[q2]
        with open("employee", "w") as fp:
            json.dump(variables,fp)
    res =  {
        "ans": ans,
        "inputType": inputType,
        "msgg": msgg,
        "st":st,
        "temp":ans,
        "variables": variables,
        "file_name":file_name,
        "lang":lang
    }
    return res


if __name__ == "__main__":
    app.run(port=5001)