devnamdev2003 commited on
Commit
b9a06bd
·
1 Parent(s): dbb7932
Files changed (1) hide show
  1. api/views.py +278 -842
api/views.py CHANGED
@@ -99,862 +99,298 @@ class GetFieldView(APIView):
99
 
100
 
101
  upper_body = """
102
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
103
- <html
104
- xmlns="http://www.w3.org/1999/xhtml"
105
- xmlns:v="urn:schemas-microsoft-com:vml"
106
- xmlns:o="urn:schemas-microsoft-com:office:office"
107
- >
108
- <head>
109
- <!--[if gte mso 9]>
110
- <xml>
111
- <o:OfficeDocumentSettings>
112
- <o:AllowPNG />
113
- <o:PixelsPerInch>96</o:PixelsPerInch>
114
- </o:OfficeDocumentSettings>
115
- </xml>
116
- <![endif]-->
117
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
118
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
119
- <meta name="x-apple-disable-message-reformatting" />
120
- <!--[if !mso]><!-->
121
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
122
- <!--<![endif]-->
123
- <title></title>
124
-
125
- <style type="text/css">
126
- @media only screen and (min-width: 620px) {
127
- .u-row {
128
- width: 600px !important;
129
  }
130
- .u-row .u-col {
131
- vertical-align: top;
 
 
 
 
 
 
 
 
 
132
  }
133
- .u-row .u-col-100 {
134
- width: 600px !important;
 
135
  }
136
- }
137
 
138
- @media (max-width: 620px) {
139
- .u-row-container {
140
- max-width: 100% !important;
141
- padding-left: 0px !important;
142
- padding-right: 0px !important;
143
  }
144
- .u-row .u-col {
145
- min-width: 320px !important;
146
- max-width: 100% !important;
147
- display: block !important;
 
 
 
 
 
 
 
 
 
 
148
  }
149
- .u-row {
150
- width: 100% !important;
 
151
  }
152
- .u-col {
153
- width: 100% !important;
 
 
 
 
 
 
 
 
154
  }
155
- .u-col > div {
156
- margin: 0 auto;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  }
158
- }
159
-
160
- body {
161
- margin: 0;
162
- padding: 0;
163
- }
164
-
165
- table,
166
- tr,
167
- td {
168
- vertical-align: top;
169
- border-collapse: collapse;
170
- }
171
-
172
- p {
173
- margin: 0;
174
- }
175
-
176
- .ie-container table,
177
- .mso-container table {
178
- table-layout: fixed;
179
- }
180
-
181
- * {
182
- line-height: inherit;
183
- }
184
-
185
- a[x-apple-data-detectors="true"] {
186
- color: inherit !important;
187
- text-decoration: none !important;
188
- }
189
-
190
- table,
191
- td {
192
- color: #000000;
193
- }
194
-
195
- #u_body a {
196
- color: #0000ee;
197
- text-decoration: underline;
198
- }
199
- </style>
200
 
201
- <!--[if !mso]><!-->
202
- <link
203
- href="https://fonts.googleapis.com/css?family=Cabin:400,700"
204
- rel="stylesheet"
205
- type="text/css"
206
- />
207
- <!--<![endif]-->
208
- </head>
209
-
210
- <body
211
- class="clean-body u_body"
212
- style="
213
- margin: 0;
214
- padding: 0;
215
- -webkit-text-size-adjust: 100%;
216
- background-color: #f9f9f9;
217
- color: #000000;
218
- "
219
- >
220
- <!--[if IE]><div class="ie-container"><![endif]-->
221
- <!--[if mso]><div class="mso-container"><![endif]-->
222
- <table
223
- id="u_body"
224
- style="
225
- border-collapse: collapse;
226
- table-layout: fixed;
227
- border-spacing: 0;
228
- mso-table-lspace: 0pt;
229
- mso-table-rspace: 0pt;
230
- vertical-align: top;
231
- min-width: 320px;
232
- margin: 0 auto;
233
- background-color: #f9f9f9;
234
- width: 100%;
235
- "
236
- cellpadding="0"
237
- cellspacing="0"
238
- >
239
- <tbody>
240
- <tr style="vertical-align: top">
241
- <td
242
- style="
243
- word-break: break-word;
244
- border-collapse: collapse !important;
245
- vertical-align: top;
246
- "
247
- >
248
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #f9f9f9;"><![endif]-->
249
-
250
- <div
251
- class="u-row-container"
252
- style="padding: 0px; background-color: transparent"
253
- >
254
- <div
255
- class="u-row"
256
- style="
257
- margin: 0 auto;
258
- min-width: 320px;
259
- max-width: 600px;
260
- overflow-wrap: break-word;
261
- word-wrap: break-word;
262
- word-break: break-word;
263
- background-color: #ffffff;
264
- "
265
- >
266
- <div
267
- style="
268
- border-collapse: collapse;
269
- display: table;
270
- width: 100%;
271
- height: 100%;
272
- background-color: transparent;
273
- "
274
- >
275
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #ffffff;"><![endif]-->
276
-
277
- <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
278
- <div
279
- class="u-col u-col-100"
280
- style="
281
- max-width: 320px;
282
- min-width: 600px;
283
- display: table-cell;
284
- vertical-align: top;
285
- "
286
- >
287
- <div style="height: 100%; width: 100% !important">
288
- <!--[if (!mso)&(!IE)]><!-->
289
- <div
290
- style="
291
- box-sizing: border-box;
292
- height: 100%;
293
- padding: 0px;
294
- border-top: 0px solid transparent;
295
- border-left: 0px solid transparent;
296
- border-right: 0px solid transparent;
297
- border-bottom: 0px solid transparent;
298
- "
299
- >
300
- <!--<![endif]-->
301
-
302
- <table
303
- style="font-family: 'Cabin', sans-serif"
304
- role="presentation"
305
- cellpadding="0"
306
- cellspacing="0"
307
- width="100%"
308
- border="0"
309
- >
310
- <tbody>
311
- <tr>
312
- <td
313
- style="
314
- overflow-wrap: break-word;
315
- word-break: break-word;
316
- padding: 33px 55px;
317
- font-family: 'Cabin', sans-serif;
318
- "
319
- align="left"
320
- >
321
- <div
322
- style="
323
- font-size: 14px;
324
- line-height: 160%;
325
- text-align: left;
326
- word-wrap: break-word;
327
- "
328
- >
329
- <p style="line-height: 160%">
330
- Dear
331
  """
332
- lower_body = """,
333
- </p>
334
- <p style="line-height: 160%">&nbsp;</p>
335
- <p style="line-height: 160%">
336
- Thank you for reaching out to me via the
337
- contact form on my portfolio website. I
338
- appreciate your interest and the time you
339
- took to get in touch.
340
- </p>
341
- <p style="line-height: 160%">&nbsp;</p>
342
- <p style="line-height: 160%">
343
- I have received your message, and I will
344
- review it as soon as possible. If your
345
- inquiry requires a response, I will do my
346
- best to get back to you promptly.
347
- </p>
348
- <p style="line-height: 160%">&nbsp;</p>
349
- <p style="line-height: 160%">
350
- In the meantime, if you have any urgent
351
- questions or need immediate assistance,
352
- please don't hesitate to contact me
353
- directly.
354
- </p>
355
- <p style="line-height: 160%">&nbsp;</p>
356
- <p style="line-height: 160%">
357
- Thank you once again for considering me. I
358
- look forward to connecting with you and
359
- addressing your inquiry.
360
- </p>
361
- <p style="line-height: 160%">&nbsp;</p>
362
- <p style="line-height: 160%">
363
- Best regards,<br />Dev Namdev<br /><a
364
- href="https://devnamdev2003.github.io/"
365
- >https://devnamdev2003.github.io/</a
366
- ><br />devnamdevcse@gmail.com
367
- </p>
368
- </div>
369
- </td>
370
- </tr>
371
- </tbody>
372
- </table>
373
-
374
- <table
375
- style="font-family: 'Cabin', sans-serif"
376
- role="presentation"
377
- cellpadding="0"
378
- cellspacing="0"
379
- width="100%"
380
- border="0"
381
- >
382
- <tbody>
383
- <tr>
384
- <td
385
- style="
386
- overflow-wrap: break-word;
387
- word-break: break-word;
388
- padding: 47px;
389
- font-family: 'Cabin', sans-serif;
390
- "
391
- align="left"
392
- >
393
- <div
394
- style="
395
- font-size: 14px;
396
- line-height: 160%;
397
- text-align: center;
398
- word-wrap: break-word;
399
- "
400
- >
401
- <p style="line-height: 160%; font-size: 14px">
402
- <span
403
- style="
404
- font-size: 18px;
405
- line-height: 28.8px;
406
- "
407
- >Thanks</span
408
- >
409
- </p>
410
- </div>
411
- </td>
412
- </tr>
413
- </tbody>
414
- </table>
415
-
416
- <!--[if (!mso)&(!IE)]><!-->
417
- </div>
418
- <!--<![endif]-->
419
- </div>
420
- </div>
421
- <!--[if (mso)|(IE)]></td><![endif]-->
422
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
423
- </div>
424
- </div>
425
- </div>
426
 
427
- <div
428
- class="u-row-container"
429
- style="padding: 0px; background-color: transparent"
430
- >
431
- <div
432
- class="u-row"
433
- style="
434
- margin: 0 auto;
435
- min-width: 320px;
436
- max-width: 600px;
437
- overflow-wrap: break-word;
438
- word-wrap: break-word;
439
- word-break: break-word;
440
- background-color: #e5eaf5;
441
- "
442
- >
443
- <div
444
- style="
445
- border-collapse: collapse;
446
- display: table;
447
- width: 100%;
448
- height: 100%;
449
- background-color: transparent;
450
- "
451
- >
452
- <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #e5eaf5;"><![endif]-->
453
-
454
- <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
455
- <div
456
- class="u-col u-col-100"
457
- style="
458
- max-width: 320px;
459
- min-width: 600px;
460
- display: table-cell;
461
- vertical-align: top;
462
- "
463
- >
464
- <div style="height: 100%; width: 100% !important">
465
- <!--[if (!mso)&(!IE)]><!-->
466
- <div
467
- style="
468
- box-sizing: border-box;
469
- height: 100%;
470
- padding: 0px;
471
- border-top: 0px solid transparent;
472
- border-left: 0px solid transparent;
473
- border-right: 0px solid transparent;
474
- border-bottom: 0px solid transparent;
475
- "
476
- >
477
- <!--<![endif]-->
478
-
479
- <table
480
- style="font-family: 'Cabin', sans-serif"
481
- role="presentation"
482
- cellpadding="0"
483
- cellspacing="0"
484
- width="100%"
485
- border="0"
486
- >
487
- <tbody>
488
- <tr>
489
- <td
490
- style="
491
- overflow-wrap: break-word;
492
- word-break: break-word;
493
- padding: 41px 55px 18px;
494
- font-family: 'Cabin', sans-serif;
495
- "
496
- align="left"
497
- >
498
- <div
499
- style="
500
- font-size: 14px;
501
- color: #003399;
502
- line-height: 160%;
503
- text-align: center;
504
- word-wrap: break-word;
505
- "
506
- >
507
- <p style="font-size: 14px; line-height: 160%">
508
- <span
509
- style="font-size: 20px; line-height: 32px"
510
- ><strong>Get in touch</strong></span
511
- >
512
- </p>
513
- <p style="font-size: 14px; line-height: 160%">
514
- <span
515
- style="
516
- font-size: 16px;
517
- line-height: 25.6px;
518
- color: #000000;
519
- "
520
- ></span
521
- >
522
- </p>
523
- <p style="font-size: 14px; line-height: 160%">
524
- <span
525
- style="
526
- font-size: 16px;
527
- line-height: 25.6px;
528
- color: #000000;
529
- "
530
- >devnamdevcse@gmail.com</span
531
- >
532
- </p>
533
- </div>
534
- </td>
535
- </tr>
536
- </tbody>
537
- </table>
538
-
539
- <table
540
- style="font-family: 'Cabin', sans-serif"
541
- role="presentation"
542
- cellpadding="0"
543
- cellspacing="0"
544
- width="100%"
545
- border="0"
546
- >
547
- <tbody>
548
- <tr>
549
- <td
550
- style="
551
- overflow-wrap: break-word;
552
- word-break: break-word;
553
- padding: 10px 10px 33px;
554
- font-family: 'Cabin', sans-serif;
555
- "
556
- align="left"
557
- >
558
- <div align="center">
559
- <div style="display: table; max-width: 293px">
560
- <!--[if (mso)|(IE)]><table width="293" cellpadding="0" cellspacing="0" border="0"><tr><td style="border-collapse:collapse;" align="center"><table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse; mso-table-lspace: 0pt;mso-table-rspace: 0pt; width:293px;"><tr><![endif]-->
561
-
562
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 17px;" valign="top"><![endif]-->
563
- <table
564
- align="left"
565
- border="0"
566
- cellspacing="0"
567
- cellpadding="0"
568
- width="32"
569
- height="32"
570
- style="
571
- width: 32px !important;
572
- height: 32px !important;
573
- display: inline-block;
574
- border-collapse: collapse;
575
- table-layout: fixed;
576
- border-spacing: 0;
577
- mso-table-lspace: 0pt;
578
- mso-table-rspace: 0pt;
579
- vertical-align: top;
580
- margin-right: 17px;
581
- "
582
- >
583
- <tbody>
584
- <tr style="vertical-align: top">
585
- <td
586
- align="left"
587
- valign="middle"
588
- style="
589
- word-break: break-word;
590
- border-collapse: collapse !important;
591
- vertical-align: top;
592
- "
593
- >
594
- <a
595
- href="https://twitter.com/devnamdev813"
596
- title="x"
597
- target="_blank"
598
- >
599
- <img
600
- src="https://cdn.tools.unlayer.com/social/icons/circle/x.png"
601
- alt="x"
602
- title="x"
603
- width="32"
604
- style="
605
- outline: none;
606
- text-decoration: none;
607
- -ms-interpolation-mode: bicubic;
608
- clear: both;
609
- display: block !important;
610
- border: none;
611
- height: auto;
612
- float: none;
613
- max-width: 32px !important;
614
- "
615
- />
616
- </a>
617
- </td>
618
- </tr>
619
- </tbody>
620
- </table>
621
- <!--[if (mso)|(IE)]></td><![endif]-->
622
-
623
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 17px;" valign="top"><![endif]-->
624
- <table
625
- align="left"
626
- border="0"
627
- cellspacing="0"
628
- cellpadding="0"
629
- width="32"
630
- height="32"
631
- style="
632
- width: 32px !important;
633
- height: 32px !important;
634
- display: inline-block;
635
- border-collapse: collapse;
636
- table-layout: fixed;
637
- border-spacing: 0;
638
- mso-table-lspace: 0pt;
639
- mso-table-rspace: 0pt;
640
- vertical-align: top;
641
- margin-right: 17px;
642
- "
643
- >
644
- <tbody>
645
- <tr style="vertical-align: top">
646
- <td
647
- align="left"
648
- valign="middle"
649
- style="
650
- word-break: break-word;
651
- border-collapse: collapse !important;
652
- vertical-align: top;
653
- "
654
- >
655
- <a
656
- href="https://www.facebook.com/dev.namdev813/"
657
- title="Facebook"
658
- target="_blank"
659
- >
660
- <img
661
- src="https://cdn.tools.unlayer.com/social/icons/circle/facebook.png"
662
- alt="Facebook"
663
- title="Facebook"
664
- width="32"
665
- style="
666
- outline: none;
667
- text-decoration: none;
668
- -ms-interpolation-mode: bicubic;
669
- clear: both;
670
- display: block !important;
671
- border: none;
672
- height: auto;
673
- float: none;
674
- max-width: 32px !important;
675
- "
676
- />
677
- </a>
678
- </td>
679
- </tr>
680
- </tbody>
681
- </table>
682
- <!--[if (mso)|(IE)]></td><![endif]-->
683
-
684
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 17px;" valign="top"><![endif]-->
685
- <table
686
- align="left"
687
- border="0"
688
- cellspacing="0"
689
- cellpadding="0"
690
- width="32"
691
- height="32"
692
- style="
693
- width: 32px !important;
694
- height: 32px !important;
695
- display: inline-block;
696
- border-collapse: collapse;
697
- table-layout: fixed;
698
- border-spacing: 0;
699
- mso-table-lspace: 0pt;
700
- mso-table-rspace: 0pt;
701
- vertical-align: top;
702
- margin-right: 17px;
703
- "
704
- >
705
- <tbody>
706
- <tr style="vertical-align: top">
707
- <td
708
- align="left"
709
- valign="middle"
710
- style="
711
- word-break: break-word;
712
- border-collapse: collapse !important;
713
- vertical-align: top;
714
- "
715
- >
716
- <a
717
- href="https://www.linkedin.com/in/devnamdev/"
718
- title="LinkedIn"
719
- target="_blank"
720
- >
721
- <img
722
- src="https://cdn.tools.unlayer.com/social/icons/circle/linkedin.png"
723
- alt="LinkedIn"
724
- title="LinkedIn"
725
- width="32"
726
- style="
727
- outline: none;
728
- text-decoration: none;
729
- -ms-interpolation-mode: bicubic;
730
- clear: both;
731
- display: block !important;
732
- border: none;
733
- height: auto;
734
- float: none;
735
- max-width: 32px !important;
736
- "
737
- />
738
- </a>
739
- </td>
740
- </tr>
741
- </tbody>
742
- </table>
743
- <!--[if (mso)|(IE)]></td><![endif]-->
744
-
745
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 17px;" valign="top"><![endif]-->
746
- <table
747
- align="left"
748
- border="0"
749
- cellspacing="0"
750
- cellpadding="0"
751
- width="32"
752
- height="32"
753
- style="
754
- width: 32px !important;
755
- height: 32px !important;
756
- display: inline-block;
757
- border-collapse: collapse;
758
- table-layout: fixed;
759
- border-spacing: 0;
760
- mso-table-lspace: 0pt;
761
- mso-table-rspace: 0pt;
762
- vertical-align: top;
763
- margin-right: 17px;
764
- "
765
- >
766
- <tbody>
767
- <tr style="vertical-align: top">
768
- <td
769
- align="left"
770
- valign="middle"
771
- style="
772
- word-break: break-word;
773
- border-collapse: collapse !important;
774
- vertical-align: top;
775
- "
776
- >
777
- <a
778
- href=" https://www.instagram.com/dev_namdev813/"
779
- title="Instagram"
780
- target="_blank"
781
- >
782
- <img
783
- src="https://cdn.tools.unlayer.com/social/icons/circle/instagram.png"
784
- alt="Instagram"
785
- title="Instagram"
786
- width="32"
787
- style="
788
- outline: none;
789
- text-decoration: none;
790
- -ms-interpolation-mode: bicubic;
791
- clear: both;
792
- display: block !important;
793
- border: none;
794
- height: auto;
795
- float: none;
796
- max-width: 32px !important;
797
- "
798
- />
799
- </a>
800
- </td>
801
- </tr>
802
- </tbody>
803
- </table>
804
- <!--[if (mso)|(IE)]></td><![endif]-->
805
-
806
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 17px;" valign="top"><![endif]-->
807
- <table
808
- align="left"
809
- border="0"
810
- cellspacing="0"
811
- cellpadding="0"
812
- width="32"
813
- height="32"
814
- style="
815
- width: 32px !important;
816
- height: 32px !important;
817
- display: inline-block;
818
- border-collapse: collapse;
819
- table-layout: fixed;
820
- border-spacing: 0;
821
- mso-table-lspace: 0pt;
822
- mso-table-rspace: 0pt;
823
- vertical-align: top;
824
- margin-right: 17px;
825
- "
826
- >
827
- <tbody>
828
- <tr style="vertical-align: top">
829
- <td
830
- align="left"
831
- valign="middle"
832
- style="
833
- word-break: break-word;
834
- border-collapse: collapse !important;
835
- vertical-align: top;
836
- "
837
- >
838
- <a
839
- href="https://www.youtube.com/@decode813"
840
- title="YouTube"
841
- target="_blank"
842
- >
843
- <img
844
- src="https://cdn.tools.unlayer.com/social/icons/circle/youtube.png"
845
- alt="YouTube"
846
- title="YouTube"
847
- width="32"
848
- style="
849
- outline: none;
850
- text-decoration: none;
851
- -ms-interpolation-mode: bicubic;
852
- clear: both;
853
- display: block !important;
854
- border: none;
855
- height: auto;
856
- float: none;
857
- max-width: 32px !important;
858
- "
859
- />
860
- </a>
861
- </td>
862
- </tr>
863
- </tbody>
864
- </table>
865
- <!--[if (mso)|(IE)]></td><![endif]-->
866
-
867
- <!--[if (mso)|(IE)]><td width="32" style="width:32px; padding-right: 0px;" valign="top"><![endif]-->
868
- <table
869
- align="left"
870
- border="0"
871
- cellspacing="0"
872
- cellpadding="0"
873
- width="32"
874
- height="32"
875
- style="
876
- width: 32px !important;
877
- height: 32px !important;
878
- display: inline-block;
879
- border-collapse: collapse;
880
- table-layout: fixed;
881
- border-spacing: 0;
882
- mso-table-lspace: 0pt;
883
- mso-table-rspace: 0pt;
884
- vertical-align: top;
885
- margin-right: 0px;
886
- "
887
- >
888
- <tbody>
889
- <tr style="vertical-align: top">
890
- <td
891
- align="left"
892
- valign="middle"
893
- style="
894
- word-break: break-word;
895
- border-collapse: collapse !important;
896
- vertical-align: top;
897
- "
898
- >
899
- <a
900
- href=" https://github.com/devnamdev2003"
901
- title="GitHub"
902
- target="_blank"
903
- >
904
- <img
905
- src="https://cdn.tools.unlayer.com/social/icons/circle/github.png"
906
- alt="GitHub"
907
- title="GitHub"
908
- width="32"
909
- style="
910
- outline: none;
911
- text-decoration: none;
912
- -ms-interpolation-mode: bicubic;
913
- clear: both;
914
- display: block !important;
915
- border: none;
916
- height: auto;
917
- float: none;
918
- max-width: 32px !important;
919
- "
920
- />
921
- </a>
922
- </td>
923
- </tr>
924
- </tbody>
925
- </table>
926
- <!--[if (mso)|(IE)]></td><![endif]-->
927
-
928
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
929
- </div>
930
- </div>
931
- </td>
932
- </tr>
933
- </tbody>
934
- </table>
935
-
936
- <!--[if (!mso)&(!IE)]><!-->
937
- </div>
938
- <!--<![endif]-->
939
- </div>
940
- </div>
941
- <!--[if (mso)|(IE)]></td><![endif]-->
942
- <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
943
- </div>
944
- </div>
945
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946
 
947
- <!--[if (mso)|(IE)]></td></tr></table><![endif]-->
948
- </td>
949
- </tr>
950
- </tbody>
951
- </table>
952
- <!--[if mso]></div><![endif]-->
953
- <!--[if IE]></div><![endif]-->
954
- </body>
955
- </html>
956
-
957
 
 
958
  """
959
 
960
  EMAIL_HOST = "smtp.gmail.com"
@@ -981,7 +417,7 @@ class ContactList1(CreateAPIView):
981
  msg["To"] = email
982
  msg["Subject"] = "Confirmation: We've Received Your Message"
983
 
984
- body = upper_body + name + lower_body
985
  msg.attach(MIMEText(body, "html"))
986
 
987
  # 🔥 IMPORTANT: timeout added
 
99
 
100
 
101
  upper_body = """
102
+ <!DOCTYPE html>
103
+ <html lang="en">
104
+
105
+ <head>
106
+ <meta charset="UTF-8">
107
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
108
+ <title>Contact Form Confirmation Template</title>
109
+
110
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
111
+
112
+ <style>
113
+ :root {
114
+ --brand-100: #dbeafe;
115
+ --brand-500: #3b82f6;
116
+ --brand-600: #2563eb;
117
+ --brand-900: #1e3a8a;
118
+ --gray-50: #f9fafb;
119
+ --gray-100: #f3f4f6;
120
+ --gray-200: #e5e7eb;
121
+ --gray-400: #9ca3af;
122
+ --gray-500: #6b7280;
123
+ --gray-600: #4b5563;
124
+ --gray-700: #374151;
125
+ --gray-900: #111827;
126
+ --white: #ffffff;
 
 
127
  }
128
+
129
+ body {
130
+ margin: 0;
131
+ padding: 20px;
132
+ background-color: var(--gray-100);
133
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
134
+ color: var(--gray-700);
135
+ display: flex;
136
+ flex-direction: column;
137
+ align-items: center;
138
+ min-height: 100vh;
139
  }
140
+
141
+ a {
142
+ text-decoration: none;
143
  }
 
144
 
145
+ strong {
146
+ font-weight: 700;
 
 
 
147
  }
148
+
149
+ .btn-copy {
150
+ background-color: var(--gray-900);
151
+ color: var(--white);
152
+ border: none;
153
+ padding: 8px 16px;
154
+ border-radius: 6px;
155
+ font-size: 14px;
156
+ font-weight: 500;
157
+ cursor: pointer;
158
+ display: flex;
159
+ align-items: center;
160
+ gap: 8px;
161
+ transition: background-color 0.2s;
162
  }
163
+
164
+ .btn-copy:hover {
165
+ background-color: #000000;
166
  }
167
+
168
+ #email-template {
169
+ width: 100%;
170
+ max-width: 600px;
171
+ background-color: var(--white);
172
+ border-radius: 12px;
173
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
174
+ overflow: hidden;
175
+ border: 1px solid var(--gray-100);
176
+ margin: 0 auto;
177
  }
178
+
179
+ .email-header {
180
+ background-color: var(--brand-600);
181
+ padding: 32px;
182
+ text-align: left;
183
+ }
184
+
185
+ .email-header h1 {
186
+ color: var(--white);
187
+ font-size: 24px;
188
+ font-weight: 700;
189
+ letter-spacing: 0.025em;
190
+ margin: 0;
191
+ text-transform: uppercase;
192
+ }
193
+
194
+ .email-header p {
195
+ color: var(--brand-100);
196
+ margin-top: 4px;
197
+ margin-bottom: 0;
198
+ font-size: 14px;
199
+ }
200
+
201
+ .email-body {
202
+ padding: 32px;
203
+ }
204
+
205
+ .greeting {
206
+ font-size: 18px;
207
+ color: var(--gray-700);
208
+ margin-bottom: 24px;
209
+ }
210
+
211
+ .highlight {
212
+ color: var(--brand-600);
213
+ font-weight: 600;
214
+ }
215
+
216
+ .text-paragraph {
217
+ color: var(--gray-600);
218
+ line-height: 1.6;
219
+ margin-bottom: 24px;
220
+ margin-top: 0;
221
+ }
222
+
223
+ .recap-box {
224
+ background-color: var(--gray-50);
225
+ border-radius: 8px;
226
+ padding: 24px;
227
+ border-left: 4px solid var(--brand-500);
228
+ margin-bottom: 32px;
229
+ }
230
+
231
+ .recap-label {
232
+ font-size: 12px;
233
+ font-weight: 700;
234
+ color: var(--gray-400);
235
+ text-transform: uppercase;
236
+ letter-spacing: 0.05em;
237
+ margin: 0 0 8px 0;
238
+ }
239
+
240
+ .recap-content {
241
+ font-style: italic;
242
+ color: var(--gray-600);
243
+ font-size: 14px;
244
+ margin: 0;
245
+ }
246
+
247
+ .btn-container {
248
+ margin-top: 32px;
249
+ text-align: left;
250
+ }
251
+
252
+ .btn-primary {
253
+ display: inline-block;
254
+ background-color: var(--brand-600);
255
+ color: var(--white);
256
+ font-weight: 500;
257
+ padding: 12px 24px;
258
+ border-radius: 8px;
259
+ font-size: 14px;
260
+ transition: background-color 0.2s;
261
+ }
262
+
263
+ .btn-primary:hover {
264
+ background-color: var(--brand-900);
265
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
 
267
+ .email-footer {
268
+ background-color: var(--gray-50);
269
+ padding: 24px 32px;
270
+ border-top: 1px solid var(--gray-100);
271
+ text-align: center;
272
+ }
273
+
274
+ .social-icons {
275
+ margin-bottom: 16px;
276
+ }
277
+
278
+ .social-link {
279
+ color: var(--gray-400);
280
+ margin: 0 8px;
281
+ font-size: 20px;
282
+ transition: color 0.2s;
283
+ }
284
+
285
+ .social-link:hover {
286
+ color: var(--brand-600);
287
+ }
288
+
289
+ .footer-text {
290
+ font-size: 12px;
291
+ color: var(--gray-400);
292
+ margin: 0;
293
+ line-height: 1.5;
294
+ }
295
+
296
+ .footer-link {
297
+ color: var(--gray-400);
298
+ text-decoration: underline;
299
+ }
300
+
301
+ .footer-link:hover {
302
+ color: var(--gray-600);
303
+ }
304
+
305
+ #toast {
306
+ position: fixed;
307
+ bottom: 20px;
308
+ right: 20px;
309
+ background-color: var(--gray-900);
310
+ color: var(--white);
311
+ padding: 12px 24px;
312
+ border-radius: 8px;
313
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
314
+ opacity: 0;
315
+ transform: translateY(20px);
316
+ transition: all 0.3s ease;
317
+ }
318
+
319
+ #toast.show {
320
+ opacity: 1;
321
+ transform: translateY(0);
322
+ }
323
+
324
+ @media (max-width: 600px) {
325
+
326
+ .email-header,
327
+ .email-body,
328
+ .email-footer {
329
+ padding: 24px;
330
+ }
331
+
332
+ .email-header,
333
+ .btn-container {
334
+ text-align: center;
335
+ }
336
+ .btn-copy {
337
+ width: 100%;
338
+ justify-content: center;
339
+ }
340
+ }
341
+ </style>
342
+ </head>
343
+
344
+ <body>
345
+ <div id="email-template">
346
+ <div class="email-header">
347
+ <h1>THANK YOU!</h1>
348
+ <p>I've received your message.</p>
349
+ </div>
350
+ <div class="email-body">
351
+ <p class="greeting">Hi <span class="highlight">"""
352
+
353
+ mid_body = """</span>,</p>
354
+ <p class="text-paragraph">
355
+ Thanks for reaching out via my portfolio! I wanted to let you know that your message has landed safely
356
+ in my inbox.
357
+ </p>
358
+ <p class="text-paragraph">
359
+ I appreciate your interest. I typically review inquiries within <strong>24 hours</strong> and will get
360
+ back to you as soon as possible.
361
+ </p>
362
+ <div class="recap-box">
363
+ <h3 class="recap-label">You wrote:</h3>
364
+ <p class="recap-content">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
 
367
+ lower_body = """
368
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  </div>
370
+ <p class="text-paragraph" style="margin-bottom: 0;">
371
+ Best regards,<br>
372
+ <span style="font-weight: 600; color: #111827;">Dev Namdev</span>
373
+ </p>
374
+ <div class="btn-container">
375
+ <a href="https://devnamdev2003.github.io/" class="btn-primary">
376
+ Return to Portfolio
377
+ </a>
378
+ </div>
379
+ </div>
380
+ <div class="email-footer">
381
+ <div class="social-icons">
382
+ <a href="https://www.linkedin.com/in/devnamdev/" class="social-link"><i class="fab fa-linkedin"></i></a>
383
+ <a href="https://github.com/devnamdev2003" class="social-link"><i class="fab fa-github"></i></a>
384
+ </div>
385
+ <p class="footer-text">
386
+ &copy; 2024 Dev Namdev. All rights reserved.<br>
387
+ </p>
388
+ </div>
389
+ </div>
390
 
391
+ </body>
 
 
 
 
 
 
 
 
 
392
 
393
+ </html>
394
  """
395
 
396
  EMAIL_HOST = "smtp.gmail.com"
 
417
  msg["To"] = email
418
  msg["Subject"] = "Confirmation: We've Received Your Message"
419
 
420
+ body = upper_body + name + mid_body + message + lower_body
421
  msg.attach(MIMEText(body, "html"))
422
 
423
  # 🔥 IMPORTANT: timeout added