From 17c85079aff5a5873572d00eab85463603e07527 Mon Sep 17 00:00:00 2001 From: nataly Date: Tue, 2 Jul 2024 16:41:44 +0300 Subject: [PATCH] New changes. --- .../__pycache__/__init__.cpython-312.pyc | Bin 189 -> 189 bytes .../__pycache__/admin.cpython-312.pyc | Bin 693 -> 693 bytes .../__pycache__/apps.cpython-312.pyc | Bin 505 -> 505 bytes .../__pycache__/models.cpython-312.pyc | Bin 2897 -> 2897 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 898 -> 898 bytes .../0002_country_addressbook.cpython-312.pyc | Bin 1847 -> 1847 bytes .../__pycache__/0003_contact.cpython-312.pyc | Bin 1410 -> 1410 bytes .../0004_socialmedia.cpython-312.pyc | Bin 1231 -> 1231 bytes ...05_socialmedia_addressbook.cpython-312.pyc | Bin 1000 -> 1000 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 200 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 185 bytes .../billing/__pycache__/admin.cpython-312.pyc | Bin 1024 -> 1024 bytes .../billing/__pycache__/apps.cpython-312.pyc | Bin 493 -> 493 bytes .../__pycache__/models.cpython-312.pyc | Bin 11237 -> 11237 bytes .../billing/__pycache__/urls.cpython-312.pyc | Bin 1226 -> 1226 bytes .../billing/__pycache__/views.cpython-312.pyc | Bin 3658 -> 3658 bytes .../add/__pycache__/urls.cpython-312.pyc | Bin 1068 -> 1070 bytes .../add/__pycache__/views.cpython-312.pyc | Bin 12211 -> 12211 bytes .../delete/__pycache__/urls.cpython-312.pyc | Bin 583 -> 583 bytes .../delete/__pycache__/views.cpython-312.pyc | Bin 1367 -> 1367 bytes .../edit/__pycache__/urls.cpython-312.pyc | Bin 648 -> 648 bytes .../edit/__pycache__/views.cpython-312.pyc | Bin 2353 -> 2353 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 2244 -> 2244 bytes ...vice_cancelled_at_and_more.cpython-312.pyc | Bin 1214 -> 1214 bytes ...003_payment_servicepayment.cpython-312.pyc | Bin 1847 -> 1847 bytes ...rename_payment_paymenttype.cpython-312.pyc | Bin 688 -> 688 bytes ...05_service_recurring_cycle.cpython-312.pyc | Bin 1015 -> 1015 bytes ...ervice_created_at_and_more.cpython-312.pyc | Bin 1092 -> 1092 bytes ...er_service_recurring_cycle.cpython-312.pyc | Bin 1076 -> 1076 bytes .../0008_alter_service_type.cpython-312.pyc | Bin 1067 -> 1067 bytes ...cepayment_service_and_more.cpython-312.pyc | Bin 1823 -> 1823 bytes .../0010_charge_amount.cpython-312.pyc | Bin 853 -> 853 bytes .../__pycache__/0011_invoice.cpython-312.pyc | Bin 1291 -> 1291 bytes ...nt_charge_receipt_and_more.cpython-312.pyc | Bin 1456 -> 1456 bytes ...alter_invoice_date_created.cpython-312.pyc | Bin 796 -> 796 bytes ...014_servicepayment_comment.cpython-312.pyc | Bin 798 -> 798 bytes .../__pycache__/0015_order.cpython-312.pyc | Bin 1528 -> 1528 bytes .../0016_alter_order_status.cpython-312.pyc | Bin 882 -> 882 bytes .../0017_service_order.cpython-312.pyc | Bin 989 -> 989 bytes .../0018_alter_order_status.cpython-312.pyc | Bin 890 -> 890 bytes ..._service_customer_and_more.cpython-312.pyc | Bin 4689 -> 4689 bytes .../0020_orderitem.cpython-312.pyc | Bin 1344 -> 1344 bytes ...m_recurring_cycle_and_more.cpython-312.pyc | Bin 1124 -> 1124 bytes ...e_item_created_at_and_more.cpython-312.pyc | Bin 1150 -> 1150 bytes ...em_project_alter_item_type.cpython-312.pyc | Bin 1370 -> 1370 bytes .../0024_remove_item_active.cpython-312.pyc | Bin 682 -> 682 bytes ...item_project_item_customer.cpython-312.pyc | Bin 1176 -> 1176 bytes ...tem_type_remove_order_paid.cpython-312.pyc | Bin 836 -> 836 bytes .../0027_item_type.cpython-312.pyc | Bin 859 -> 859 bytes ...0028_remove_order_due_date.cpython-312.pyc | Bin 663 -> 663 bytes .../0029_invoice_pdf.cpython-312.pyc | Bin 788 -> 788 bytes .../0030_alter_invoice_order.cpython-312.pyc | Bin 982 -> 982 bytes ...ter_invoice_invoice_number.cpython-312.pyc | Bin 809 -> 809 bytes .../0032_order_business.cpython-312.pyc | Bin 1066 -> 1066 bytes .../0033_alter_order_status.cpython-312.pyc | Bin 907 -> 907 bytes .../0034_alter_invoice_pdf.cpython-312.pyc | Bin 810 -> 810 bytes .../0035_alter_invoice_pdf.cpython-312.pyc | Bin 792 -> 792 bytes ...ter_invoice_invoice_number.cpython-312.pyc | Bin 818 -> 818 bytes .../0037_recurringcycle_item.cpython-312.pyc | Bin 998 -> 998 bytes .../0038_alter_invoice_pdf.cpython-312.pyc | Bin 810 -> 810 bytes ...recurringcycle_cycle_price.cpython-312.pyc | Bin 787 -> 787 bytes ..._orderitem_end_at_and_more.cpython-312.pyc | Bin 939 -> 939 bytes .../0041_orderitem_active.cpython-312.pyc | Bin 806 -> 806 bytes .../0042_order_due_date.cpython-312.pyc | Bin 772 -> 772 bytes .../0043_alter_invoice_pdf.cpython-312.pyc | Bin 808 -> 808 bytes ...044_alter_orderitem_active.cpython-312.pyc | Bin 788 -> 788 bytes ...ter_orderpayment_date_paid.cpython-312.pyc | Bin 962 -> 962 bytes ...t_order_orderpayment_order.cpython-312.pyc | Bin 1134 -> 1134 bytes ...cription_paymenttype_image.cpython-312.pyc | Bin 1003 -> 1003 bytes ...e_order_status_orderstatus.cpython-312.pyc | Bin 1565 -> 1565 bytes ...rename_due_date_order_date.cpython-312.pyc | Bin 715 -> 715 bytes ...ent_type_orderpayment_type.cpython-312.pyc | Bin 925 -> 925 bytes ..._alter_orderpayment_amount.cpython-312.pyc | Bin 807 -> 807 bytes ...2_alter_orderstatus_status.cpython-312.pyc | Bin 937 -> 937 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 196 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 190 bytes .../__pycache__/admin.cpython-312.pyc | Bin 805 -> 234 bytes .../__pycache__/apps.cpython-312.pyc | Bin 508 -> 508 bytes .../custom_context.cpython-312.pyc | Bin 2578 -> 2607 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 1335 -> 1335 bytes .../__pycache__/models.cpython-312.pyc | Bin 6072 -> 188 bytes .../__pycache__/urls.cpython-312.pyc | Bin 2993 -> 2852 bytes .../__pycache__/views.cpython-312.pyc | Bin 15735 -> 13757 bytes .../add/__pycache__/urls.cpython-312.pyc | Bin 784 -> 429 bytes .../add/__pycache__/views.cpython-312.pyc | Bin 8456 -> 4074 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 4262 -> 4262 bytes ...02_alter_ticket_department.cpython-312.pyc | Bin 1083 -> 1083 bytes ...mer_ticket_status_and_more.cpython-312.pyc | Bin 1548 -> 1548 bytes ...ket_ticket_number_and_more.cpython-312.pyc | Bin 1259 -> 1259 bytes .../0005_ticketstatusupdate.cpython-312.pyc | Bin 1859 -> 1859 bytes .../0006_ticketupdate_read.cpython-312.pyc | Bin 796 -> 796 bytes ...ead_ticketupdatereadstatus.cpython-312.pyc | Bin 1775 -> 1775 bytes ...pdatereadstatus_ticketread.cpython-312.pyc | Bin 916 -> 916 bytes ...er_ticketattachment_ticket.cpython-312.pyc | Bin 1062 -> 1062 bytes ...ction_ticketupdatereaction.cpython-312.pyc | Bin 737 -> 737 bytes ...ketupdatereaction_customer.cpython-312.pyc | Bin 1219 -> 1219 bytes ...0012_ticket_ticket_members.cpython-312.pyc | Bin 1034 -> 1034 bytes ...lter_ticket_ticket_members.cpython-312.pyc | Bin 903 -> 903 bytes ...partment_ticket_department.cpython-312.pyc | Bin 984 -> 984 bytes ...artment_ticket_departments.cpython-312.pyc | Bin 757 -> 757 bytes ...tstatusupdate_ticketstatus.cpython-312.pyc | Bin 901 -> 901 bytes .../0017_tickettask.cpython-312.pyc | Bin 1395 -> 1395 bytes ...lter_ticketattachment_file.cpython-312.pyc | Bin 809 -> 809 bytes .../__pycache__/0019_file.cpython-312.pyc | Bin 1109 -> 1109 bytes ...lter_ticketattachment_file.cpython-312.pyc | Bin 809 -> 809 bytes .../0021_file_ticket.cpython-312.pyc | Bin 1017 -> 1017 bytes .../0022_remove_file_ticket.cpython-312.pyc | Bin 669 -> 669 bytes ...etattachment_file_and_more.cpython-312.pyc | Bin 1017 -> 1017 bytes ...attachment_ticket_and_more.cpython-312.pyc | Bin 0 -> 2067 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 201 bytes .../payment/__pycache__/urls.cpython-312.pyc | Bin 1390 -> 1390 bytes .../payment/__pycache__/views.cpython-312.pyc | Bin 15190 -> 15190 bytes osinaweb/db.sqlite3 | Bin 1409024 -> 1409024 bytes osinaweb/input.css | 20 + .../__pycache__/__init__.cpython-312.pyc | Bin 187 -> 187 bytes .../__pycache__/admin.cpython-312.pyc | Bin 3623 -> 3623 bytes .../__pycache__/apps.cpython-312.pyc | Bin 499 -> 499 bytes .../custom_context.cpython-312.pyc | Bin 6866 -> 6866 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 1318 -> 1318 bytes .../__pycache__/forms.cpython-312.pyc | Bin 1270 -> 1270 bytes .../__pycache__/models.cpython-312.pyc | Bin 26629 -> 26629 bytes .../__pycache__/urls.cpython-312.pyc | Bin 6567 -> 6387 bytes .../__pycache__/views.cpython-312.pyc | Bin 41729 -> 41464 bytes .../add/__pycache__/urls.cpython-312.pyc | Bin 3354 -> 3354 bytes .../add/__pycache__/views.cpython-312.pyc | Bin 31177 -> 31375 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 1181 -> 1181 bytes .../api/__pycache__/urls.cpython-312.pyc | Bin 394 -> 394 bytes .../api/__pycache__/views.cpython-312.pyc | Bin 1966 -> 1966 bytes .../delete/__pycache__/urls.cpython-312.pyc | Bin 1836 -> 1836 bytes .../delete/__pycache__/views.cpython-312.pyc | Bin 6262 -> 6262 bytes .../edit/__pycache__/urls.cpython-312.pyc | Bin 3277 -> 3277 bytes .../edit/__pycache__/views.cpython-312.pyc | Bin 28254 -> 28254 bytes .../__pycache__/urls.cpython-312.pyc | Bin 415 -> 415 bytes .../__pycache__/views.cpython-312.pyc | Bin 643 -> 643 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 3804 -> 3804 bytes ...ions_staffprofile_and_more.cpython-312.pyc | Bin 3960 -> 3960 bytes .../0003_milestone.cpython-312.pyc | Bin 1505 -> 1505 bytes .../__pycache__/0004_epic.cpython-312.pyc | Bin 1447 -> 1447 bytes .../0005_staffprofile_image.cpython-312.pyc | Bin 779 -> 779 bytes .../__pycache__/0006_note.cpython-312.pyc | Bin 1685 -> 1685 bytes ...ct_id_alter_project_status.cpython-312.pyc | Bin 1058 -> 1058 bytes ...8_alter_project_project_id.cpython-312.pyc | Bin 837 -> 837 bytes ...9_alter_project_project_id.cpython-312.pyc | Bin 821 -> 821 bytes .../0010_remove_note_date.cpython-312.pyc | Bin 672 -> 672 bytes ...r_alter_note_text_and_more.cpython-312.pyc | Bin 1808 -> 1808 bytes .../0012_projectrequirement.cpython-312.pyc | Bin 1295 -> 1295 bytes .../0013_projectfile.cpython-312.pyc | Bin 1410 -> 1410 bytes ...014_alter_projectfile_file.cpython-312.pyc | Bin 790 -> 790 bytes .../0015_projectcredentials.cpython-312.pyc | Bin 1416 -> 1416 bytes ...dentials_projectcredential.cpython-312.pyc | Bin 722 -> 722 bytes ...e_alter_project_start_date.cpython-312.pyc | Bin 966 -> 966 bytes .../0018_epic_status.cpython-312.pyc | Bin 866 -> 866 bytes ...date_alter_epic_start_date.cpython-312.pyc | Bin 924 -> 924 bytes .../__pycache__/0020_task.cpython-312.pyc | Bin 1942 -> 1942 bytes ...rprofile_business_and_more.cpython-312.pyc | Bin 2856 -> 2856 bytes ...ustomerprofile_customer_id.cpython-312.pyc | Bin 847 -> 847 bytes .../0023_task_assigned_to.cpython-312.pyc | Bin 1005 -> 1005 bytes .../0024_task_task_id.cpython-312.pyc | Bin 793 -> 793 bytes .../__pycache__/0025_status.cpython-312.pyc | Bin 1576 -> 1576 bytes ...e_status_user_status_staff.cpython-312.pyc | Bin 1128 -> 1128 bytes .../0027_alter_status_staff.cpython-312.pyc | Bin 1046 -> 1046 bytes ...8_remove_projecttype_color.cpython-312.pyc | Bin 682 -> 682 bytes .../0029_alter_reference_date.cpython-312.pyc | Bin 791 -> 791 bytes .../__pycache__/0030_tag.cpython-312.pyc | Bin 919 -> 919 bytes ...1_alter_staffprofile_image.cpython-312.pyc | Bin 797 -> 797 bytes .../__pycache__/0032_point.cpython-312.pyc | Bin 1429 -> 1429 bytes ...nt_date_workingon_and_more.cpython-312.pyc | Bin 1219 -> 1219 bytes ...nt_date_completed_and_more.cpython-312.pyc | Bin 1275 -> 1275 bytes .../0035_business_business_id.cpython-312.pyc | Bin 829 -> 829 bytes ...lter_staffprofile_position.cpython-312.pyc | Bin 1160 -> 1160 bytes ...move_staffprofile_position.cpython-312.pyc | Bin 714 -> 714 bytes ...taffprofile_staff_position.cpython-312.pyc | Bin 1029 -> 1029 bytes ...taffprofile_staff_position.cpython-312.pyc | Bin 1054 -> 1054 bytes ...0040_staffprofile_staff_id.cpython-312.pyc | Bin 829 -> 829 bytes .../0041_dailyreport.cpython-312.pyc | Bin 1467 -> 1467 bytes ...omerprofile_email_and_more.cpython-312.pyc | Bin 1173 -> 1173 bytes .../0043_businesstype.cpython-312.pyc | Bin 955 -> 955 bytes ...ove_business_business_type.cpython-312.pyc | Bin 686 -> 686 bytes .../0045_business_type.cpython-312.pyc | Bin 1019 -> 1019 bytes .../0046_task_requirement.cpython-312.pyc | Bin 1015 -> 1015 bytes .../0047_task_status_date.cpython-312.pyc | Bin 920 -> 920 bytes ...r_customerprofile_business.cpython-312.pyc | Bin 1074 -> 1074 bytes ...r_customerprofile_business.cpython-312.pyc | Bin 1042 -> 1042 bytes ...by_projectrequirement_date.cpython-312.pyc | Bin 1374 -> 1374 bytes ...051_alter_task_requirement.cpython-312.pyc | Bin 1045 -> 1045 bytes .../0052_note_project.cpython-312.pyc | Bin 998 -> 998 bytes .../0053_pointactivity.cpython-312.pyc | Bin 1289 -> 1289 bytes ...nt_date_completed_and_more.cpython-312.pyc | Bin 926 -> 926 bytes .../0055_alter_point_status.cpython-312.pyc | Bin 921 -> 921 bytes ...ter_pointactivity_end_time.cpython-312.pyc | Bin 806 -> 806 bytes ...otal_time_minutes_and_more.cpython-312.pyc | Bin 1105 -> 1105 bytes ..._total_time_hours_and_more.cpython-312.pyc | Bin 904 -> 904 bytes ...059_alter_task_requirement.cpython-312.pyc | Bin 1050 -> 1050 bytes ...0_pointactivity_total_time.cpython-312.pyc | Bin 806 -> 806 bytes ...date_alter_task_start_date.cpython-312.pyc | Bin 927 -> 927 bytes .../0062_connection.cpython-312.pyc | Bin 1566 -> 1566 bytes ...0063_alter_connection_date.cpython-312.pyc | Bin 773 -> 773 bytes .../__pycache__/0064_reaction.cpython-312.pyc | Bin 1596 -> 1596 bytes ...ter_customerprofile_status.cpython-312.pyc | Bin 909 -> 909 bytes ...business_business_customer.cpython-312.pyc | Bin 1165 -> 1165 bytes ..._customerprofile_confirmed.cpython-312.pyc | Bin 848 -> 848 bytes ...profile_confirmed_and_more.cpython-312.pyc | Bin 1053 -> 1053 bytes ..._projectfile_file_and_more.cpython-312.pyc | Bin 1178 -> 1178 bytes ...le_staff_position_and_more.cpython-312.pyc | Bin 1755 -> 1755 bytes ...jecttype_department_ticket.cpython-312.pyc | Bin 2358 -> 2358 bytes ...treaction_ticketattachment.cpython-312.pyc | Bin 2736 -> 2736 bytes ...073_alter_ticket_regarding.cpython-312.pyc | Bin 927 -> 927 bytes ...ed_ticketupdate_date_added.cpython-312.pyc | Bin 740 -> 740 bytes ...attachment_ticket_and_more.cpython-312.pyc | Bin 1334 -> 1334 bytes .../0076_alter_reference_date.cpython-312.pyc | Bin 782 -> 782 bytes ...oject_active_projectstatus.cpython-312.pyc | Bin 1737 -> 1737 bytes ...alter_projectstatus_status.cpython-312.pyc | Bin 933 -> 933 bytes ...e_alter_project_start_date.cpython-312.pyc | Bin 917 -> 917 bytes .../0080_project_logo.cpython-312.pyc | Bin 822 -> 822 bytes .../0081_status_task.cpython-312.pyc | Bin 1030 -> 1030 bytes .../0082_pinnedproject.cpython-312.pyc | Bin 1499 -> 1499 bytes ...ition_jobposition_and_more.cpython-312.pyc | Bin 829 -> 829 bytes .../0084_staffposition.cpython-312.pyc | Bin 1484 -> 1484 bytes ...sition_start_date_and_more.cpython-312.pyc | Bin 0 -> 937 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 198 bytes .../osinacore/templates/customer_index.html | 2 +- .../details_templates/staff-details.html | 148 ++- .../__pycache__/__init__.cpython-312.pyc | Bin 186 -> 186 bytes .../osinaweb/__pycache__/asgi.cpython-312.pyc | Bin 0 -> 1118 bytes .../__pycache__/settings.cpython-312.pyc | Bin 3546 -> 3661 bytes .../osinaweb/__pycache__/urls.cpython-312.pyc | Bin 1477 -> 1534 bytes osinaweb/static/dist/output.css | 104 +++ .../add-staffs-position-in-staffs-details.js | 47 + osinaweb/static/js/pop-modals.js | 10 + .../static/js/tickets/fixed-ticket-header.js | 26 + .../js/tickets/scroll-bottom-in-ticket.js | 5 + osinaweb/static/js/tickets/tickets-room.js | 178 ++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 185 bytes .../support/__pycache__/admin.cpython-312.pyc | Bin 0 -> 976 bytes .../support/__pycache__/apps.cpython-312.pyc | Bin 0 -> 493 bytes .../__pycache__/consumers.cpython-312.pyc | Bin 0 -> 6424 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 0 -> 1451 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 11052 bytes .../__pycache__/routing.cpython-312.pyc | Bin 0 -> 424 bytes .../support/__pycache__/urls.cpython-312.pyc | Bin 0 -> 1689 bytes .../support/__pycache__/views.cpython-312.pyc | Bin 0 -> 2779 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 7003 bytes ...icket_departments_and_more.cpython-312.pyc | Bin 0 -> 2266 bytes .../0003_remove_ticket_status.cpython-312.pyc | Bin 0 -> 686 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 196 bytes .../add-ticket-department-modal.html | 37 + .../add-ticket-member-modal.html | 33 + .../partials/typing-message.html | 13 +- .../details_templates/ticket-room.html | 843 ++++++++---------- .../details_templates/ticket-settings.html | 106 +++ osinaweb/support/urls.py | 3 + osinaweb/support/views.py | 32 + osinaweb/tailwind.config.js | 1 + 253 files changed, 1052 insertions(+), 556 deletions(-) create mode 100644 osinaweb/customercore/migrations/__pycache__/0024_remove_ticketattachment_ticket_and_more.cpython-312.pyc create mode 100644 osinaweb/osinacore/migrations/__pycache__/0085_rename_date_staffposition_start_date_and_more.cpython-312.pyc create mode 100644 osinaweb/osinaweb/__pycache__/asgi.cpython-312.pyc create mode 100644 osinaweb/static/js/add-staffs-position-in-staffs-details.js create mode 100644 osinaweb/static/js/tickets/fixed-ticket-header.js create mode 100644 osinaweb/static/js/tickets/scroll-bottom-in-ticket.js create mode 100644 osinaweb/static/js/tickets/tickets-room.js create mode 100644 osinaweb/support/__pycache__/__init__.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/admin.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/apps.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/consumers.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/decorators.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/models.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/routing.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/urls.cpython-312.pyc create mode 100644 osinaweb/support/__pycache__/views.cpython-312.pyc create mode 100644 osinaweb/support/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 osinaweb/support/migrations/__pycache__/0002_remove_ticket_departments_and_more.cpython-312.pyc create mode 100644 osinaweb/support/migrations/__pycache__/0003_remove_ticket_status.cpython-312.pyc create mode 100644 osinaweb/support/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 osinaweb/support/templates/add_templates/add-ticket-department-modal.html create mode 100644 osinaweb/support/templates/add_templates/add-ticket-member-modal.html create mode 100644 osinaweb/support/templates/details_templates/ticket-settings.html diff --git a/osinaweb/addressbook/__pycache__/__init__.cpython-312.pyc b/osinaweb/addressbook/__pycache__/__init__.cpython-312.pyc index 644020686f7f65be12351a029d328dccd3650db7..9371874a1fe00cbbae6e16a9700527b54d5d2510 100644 GIT binary patch delta 19 ZcmdnXxR;UpG%qg~0}$+6+B}ha696=C1*-r6 delta 19 ZcmdnXxR;UpG%qg~0}wc$Oq>z81vdZy diff --git a/osinaweb/addressbook/__pycache__/admin.cpython-312.pyc b/osinaweb/addressbook/__pycache__/admin.cpython-312.pyc index f44fc52b16e7ebdfb7dc6a6c83ba87993519d9d5..2b396b3da25e1a330b845be8448bcea07da59543 100644 GIT binary patch delta 20 acmdnWx|NmtG%qg~0}$+6+Psl_6%znC>;=65 delta 20 acmdnWx|NmtG%qg~0}wc$Oxwu4iU|NV)&)rb diff --git a/osinaweb/addressbook/__pycache__/apps.cpython-312.pyc b/osinaweb/addressbook/__pycache__/apps.cpython-312.pyc index 069254832f813cd637fb19d6e92291449bec5fe8..110c215cfdcbc9259a5081a5d8884a6f39a6fba1 100644 GIT binary patch delta 20 acmey#{F9mcG%qg~0}$+6+Psnb9U}llLk5HZ delta 20 acmey#{F9mcG%qg~0}wc$Oxwu)ju8MsEd~$( diff --git a/osinaweb/addressbook/__pycache__/models.cpython-312.pyc b/osinaweb/addressbook/__pycache__/models.cpython-312.pyc index 1a6a05cfa32b0cf65eeb86cda384c4d631178bb9..3d45d576385207d2ae25498d043ebf67115124b9 100644 GIT binary patch delta 20 acmca8c2SJ`G%qg~0}$+6+Psn5jT-@&CAQh00jG%HgDuEX9fT=Jq0NM delta 20 acmZo-Z(`>@&CAQh00hn_(>8LKGXnrGCj_+s diff --git a/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-312.pyc b/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-312.pyc index 3273ad7e92169c9b292c208e7acf577b4d3b0906..7d3c92f3d80927b0880a2032ac190d82c65805d2 100644 GIT binary patch delta 20 acmdnax1EpsG%qg~0}$+6+PsllhaCVqg#}sw delta 20 acmdnax1EpsG%qg~0}wc$Oxwt8LKvjPAwxdgue diff --git a/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-312.pyc b/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-312.pyc index f8356220a983a90d24e2b10e77d585ac985a9b65..345554a3c4ea79841564241f8cb5f5dffc1c0c9f 100644 GIT binary patch delta 20 acmX@ld7hK|G%qg~0}$+6+Psnb2nzr{js_I~ delta 20 acmX@ld7hK|G%qg~0}wc$OxwtPgarUQcm<&V diff --git a/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-312.pyc b/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-312.pyc index 77bcdbebf9035d909bb7a9fe5091dac389b3c8d3..19abbe23c2b338405c8a72ae022a4bc3b6c3deb6 100644 GIT binary patch delta 20 acmaFC{(_zRG%qg~0}$+6+PsnbE;9f^Ee2Zv delta 20 acmaFC{(_zRG%qg~0}wc$OxwtPml*&*7X{}4 diff --git a/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-312.pyc b/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-312.pyc index b80c083267f274850269fc7fae33fbe4acd30b0b..8f8db36cb2f90977181396984e337ccd68f488d5 100644 GIT binary patch delta 19 ZcmX@Xc!H7pG%qg~0}$+6+B}haF90?M18K{Wd;B*`voxo diff --git a/osinaweb/billing/__pycache__/apps.cpython-312.pyc b/osinaweb/billing/__pycache__/apps.cpython-312.pyc index e94b99700055b258056ecb5ab74a9f511c2d7344..6529b5b8047be70fc95fa5f2fcf6652d1f0e2065 100644 GIT binary patch delta 20 acmaFM{Fa&fG%qg~0}$+6+Psnb5hDOXV+LRV delta 20 acmaFM{Fa&fG%qg~0}wc$Oxwu)h!FrkO$F=# diff --git a/osinaweb/billing/__pycache__/models.cpython-312.pyc b/osinaweb/billing/__pycache__/models.cpython-312.pyc index 271dfed0ec657d20e8f06e4a2c1f253057772947..f49c0c36a8b0cab4a3e5eeba740eaaa52dd7b1b2 100644 GIT binary patch delta 20 acmaDF{xqEXG%qg~0}$+6+PsnbmNo!Q9S0f! delta 20 acmaDF{xqEXG%qg~0}v#eR&M0Jr40Z_&IUyQ diff --git a/osinaweb/billing/__pycache__/urls.cpython-312.pyc b/osinaweb/billing/__pycache__/urls.cpython-312.pyc index cac5495edfadfcce5102de614bf3d2c3f54bd18e..0e4916a18cf7d11d6b2220ee81cfb6c3af0562ab 100644 GIT binary patch delta 20 acmX@bd5V+!G%qg~0}$+6+Psl_KMMdo#s&re delta 20 acmX@bd5V+!G%qg~0}wc$Oxwu4p9KIqumzF; diff --git a/osinaweb/billing/__pycache__/views.cpython-312.pyc b/osinaweb/billing/__pycache__/views.cpython-312.pyc index 43a644bf71685287edf7e9b91e2f013544f31f61..9cf9b18513f3bf515820c3866651fe1244916b21 100644 GIT binary patch delta 20 acmX>lb4rH$G%qg~0}$+6+Psn5o(}*&dlb4rH$G%qg~0}v#eR&M0B=K}ybEd=2J diff --git a/osinaweb/billing/add/__pycache__/urls.cpython-312.pyc b/osinaweb/billing/add/__pycache__/urls.cpython-312.pyc index 6a6179203608ed883e3783664bc6bb42fee2c4f9..a08f829ff031cf3f6bdbb9370d9e1ac8e7e65334 100644 GIT binary patch delta 50 zcmZ3(v5tfHG%qg~0}u!?maYz(ZNlP@#-af|ZsGc|G-i31e@ E08tVP^#A|> delta 48 zcmZ3-v4(^9G%qg~0}$wERHn_`$Xmh;!zjGjP^W^KtBg^PQKU!*C8L~G64WD&IG~$ diff --git a/osinaweb/billing/edit/__pycache__/views.cpython-312.pyc b/osinaweb/billing/edit/__pycache__/views.cpython-312.pyc index 98c6340da7e66ee96ad510242f6fbe344c4fab01..954e61fb7c9c75fe2d761b7b426f0211a3ff40e8 100644 GIT binary patch delta 20 acmdlev{8urG%qg~0}$+6+PslljS~PmCk0Xf delta 20 acmdlev{8urG%qg~0}wc$Oxwt<#t8s75d_`< diff --git a/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0001_initial.cpython-312.pyc index f19273dee50343c9381f65c531bdc4f80b365e2f..3fcff987d6d9f326c291dc0843c89a05312e45d9 100644 GIT binary patch delta 20 acmX>ictnuictnu@ diff --git a/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-312.pyc index 609648d15301fec270bfec62298ab8ec3f9b6083..3bb2fcad3d3564d3c77c850394c8b15d4879c5df 100644 GIT binary patch delta 20 acmey){+*rsG%qg~0}$+6+Psnb4Kn~lg$9TK delta 20 acmey){+*rsG%qg~0}wc$Oxwu)h8X}sZw3?q diff --git a/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0006_alter_service_cancelled_at_alter_service_created_at_and_more.cpython-312.pyc index 678b5968373828ac1bd4c1ab8b04958596a7ec8b..6c3b447fe6d4f96875a977e8a911d86dd9e3bf08 100644 GIT binary patch delta 20 acmX@YafE~WG%qg~0}$+6+Psn5k_7-evITMg delta 20 acmX@YafE~WG%qg~0}wc$Oxwt9$pQd4oCN*= diff --git a/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-312.pyc index a103c63701d6aab994869b71788508a40c12feed..1bd99e7b839c456b1587f5dabea409f6fc4da8a3 100644 GIT binary patch delta 20 acmdnOv4w;CG%qg~0}$+6+PslllLY`dG6g~a delta 20 acmdnOv4w;CG%qg~0}wc$Oxwt<$pQd290bk) diff --git a/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-312.pyc index 88cf7fcfc24272a1535a7e6f534ba3d67764916c..2848d59ca1a8975870c507e06ced8bcd315eb6ad 100644 GIT binary patch delta 20 acmZ3@v6_SXG%qg~0}$+6+Psllfdv3J$^|C? delta 20 acmZ3@v6_SXG%qg~0}wc$OxwtgM7;&CAQh00jG%HZSC61pqD_1iSzM delta 19 ZcmeC?>gM7;&CAQh00hn_(-v~G0st#|1V{h? diff --git a/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0012_remove_servicepayment_charge_receipt_and_more.cpython-312.pyc index 2a21b41fed33299c740296b6f49b8ce930c6f228..fc3b6e1c162120c70b0e7a84158aff46e8e41e08 100644 GIT binary patch delta 20 acmdnMy@8wiG%qg~0}$+6+Psl_DJuXu{{_7O delta 20 acmdnMy@8wiG%qg~0}wc$Oxwu4lobFr=>B>yc?A0a delta 20 acmbQoHjj<_G%qg~0}wc$OxwsU%nSfBV+4l) diff --git a/osinaweb/billing/migrations/__pycache__/0015_order.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0015_order.cpython-312.pyc index 301036d31b3602c19c1c412d0b69da4e41f0a655..6ea71b4fec23b831deffe531516eba263bb7c357 100644 GIT binary patch delta 20 acmeyt{ezqPG%qg~0}$+6+PsnbEh_*;KL(Wm delta 20 acmeyt{ezqPG%qg~0}wc$Oxwu)mK6X(DFz_` diff --git a/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-312.pyc index 2f512d084c35603493c0c283d5a1e0f13644ed4f..470b57f9d99c12462923500a1a37e846e20bd787 100644 GIT binary patch delta 20 acmeyw_KA)AG%qg~0}$+6+PslFof!Z^nFaR% delta 20 acmeyw_KA)AG%qg~0}wc$Oxwtv&I|xQg9U>C diff --git a/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-312.pyc index 41e0751f9f044acce8e7ffd5175a61efbf833cff..1279859ca746eaee5c495bdddafb9a34341655d4 100644 GIT binary patch delta 20 acmcc1ewUs5G%qg~0}$+6+Psnb5;Fimbp|>B delta 20 acmcc1ewUs5G%qg~0}wc$OxwtPi5UPrUj@bh diff --git a/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-312.pyc index a9e9fedbcab874019c06272b0d69caa18d507188..6e22e464768f6e94fcdf4c8474034b498676b030 100644 GIT binary patch delta 20 acmeyx_KS`CG%qg~0}$+6+PslFpBVr{*#-{) delta 20 acmeyx_KS`CG%qg~0}wc$Oxwtv&kO)S!v&iF diff --git a/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-312.pyc index 2ade961b3533d319301baa2ae81a43cb795ef685..6385a95ff3213b82663b94e3e07ae3641acebf91 100644 GIT binary patch delta 20 acmcbpa#4l*G%qg~0}$+6+Psn5O$Y!%xCP$; delta 20 acmcbpa#4l*G%qg~0}wc$OxwuqCIkRJq6KRJ diff --git a/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0020_orderitem.cpython-312.pyc index 667e87a4be4404a01dfe81ececb043e4b3671544..bcdf0d1077405d279df8e836210ccb04d8506716 100644 GIT binary patch delta 20 acmX@Wb%2ZeG%qg~0}$+6+Psn5lobFwTLo(X delta 20 acmX@Wb%2ZeG%qg~0}wc$Oxwt9$_fBDMFjT% diff --git a/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0021_remove_item_recurring_cycle_and_more.cpython-312.pyc index 0f6d2cf9cfbf48babf083ad743375dffd233bdf6..c9b4870f4e8b5311813653a6ce3eaaa2111922df 100644 GIT binary patch delta 20 acmaFD@q~l>G%qg~0}$+6+PslFk_7-jvIWur delta 20 acmaFD@q~l>G%qg~0}wc$OxwsE$pQd9oCRJ0 diff --git a/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-312.pyc index 4f79b12d0682903a80e2b0188992bc25c1726d9f..1862976488b2ecda00ad47acdd78826d182aa683 100644 GIT binary patch delta 20 acmeyz@sET1G%qg~0}$+6+Psmwm<0et!UiA! delta 20 acmeyz@sET1G%qg~0}wc$Oxws^%mM&GtOcw9 diff --git a/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-312.pyc index c2c23bc2522a541d46c0692b43e4e3b49e4ad438..452f7f2749a9801b5c54a56b94af70a234ee91d5 100644 GIT binary patch delta 20 acmcb`b&HGpG%qg~0}$+6+Psn5pA`T diff --git a/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0025_remove_item_project_item_customer.cpython-312.pyc index c2bbb8f15806204c319353f47bc357e475a1c684..317aa8e25f6b28be7700b96b27c6a4fac31e5ad1 100644 GIT binary patch delta 20 acmbQiIfIk?G%qg~0}$+6+PsmwmjwVd_62YN delta 20 acmbQiIfIk?G%qg~0}wc$Oxwua%K`v0-~{{t diff --git a/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0026_rename_type_item_item_type_remove_order_paid.cpython-312.pyc index 95e2c6dbc5b2473b40085ff14bbc34f391cdcd7c..9ddaf4d8dc8b0d8eda884b4e0f0d8d93d8ce7bf8 100644 GIT binary patch delta 20 acmX@Yc7%=lG%qg~0}$+6+Psn5k{JLyX$5Tn delta 20 acmX@Yc7%=lG%qg~0}wc$Oxwt9$qWEEQv~?{ diff --git a/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-312.pyc index 61193965c78bcec2d9e6612c5fae67e04c2fa8ed..f104610f404692849e3aeddfb67faf49f4052f42 100644 GIT binary patch delta 20 acmcc3cAJg+G%qg~0}$+6+PslFfEfTk0R^%E delta 20 acmcc3cAJg+G%qg~0}wc$OxwsEzzhI8>jgdl diff --git a/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-312.pyc index 7554054b29fd82ba62103adf22fefb0a865a941e..f3e5cbb720b9f253d0f294d7c2022d2904536dfc 100644 GIT binary patch delta 20 acmbQvI-QmKG%qg~0}$+6+PsmwhY0{RJOyI_ delta 20 acmbQvI-QmKG%qg~0}wc$Oxwua!vp{_CIs&Q diff --git a/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-312.pyc index 84d6e154bc196a2a2f43c91dad92bfeb4b71869b..cf59b1756d606844f71705b9fd6a184823ef7d9a 100644 GIT binary patch delta 20 acmbQjHieD*G%qg~0}$+6+PsmQlNkUr=>**X delta 20 acmbQjHieD*G%qg~0}wc$OxwuK$qWE6(*$V% diff --git a/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0030_alter_invoice_order.cpython-312.pyc index 584794d0fdc3e6c1c8683a04d4f00118bfb91915..84c568361ca8d5d8c1a9a6b6b66f4c255ff94e64 100644 GIT binary patch delta 20 acmcb{evO^`G%qg~0}$+6+PsnbG&2A{T?Qop delta 20 acmcb{evO^`G%qg~0}wc$OxwtPni&8*M+LC} diff --git a/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-312.pyc index 4eac98dcd63278515956e19c167bdb8ade6922db..c4de8eb6cee3f0a539ff972c0a652e1fa93b0efa 100644 GIT binary patch delta 20 acmZ38K9FarQEj|9*F diff --git a/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-312.pyc index 8cb57df1e1b74cf65026e49d07ffb3b8c0a8954a..c7b63dbe01e170717ed5f4af2c2a548782caff79 100644 GIT binary patch delta 20 acmZ3*wu+7WG%qg~0}$+6+Psllo*4i)Sp^>e delta 20 acmZ3*wu+7WG%qg~0}wc$OxwsU&kO)GLj diff --git a/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-312.pyc index 7ff6d3be4bf3c532db7e26a9e5b3a3a36c5894f1..657861dde29cd5545c923be50cd48500d24ce0ca 100644 GIT binary patch delta 20 acmaFH{*0abG%qg~0}$+6+PsnbHZuT0-3Ce delta 20 acmZ3*wu+7WG%qg~0}wc$OxwsU&kO)GLj delta 20 acmbQtHkpn4G%qg~0}wc$OxwuK!3+Q}s|02M diff --git a/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-312.pyc index ca9d348eba99dc3159f483b2f5bc2ce10bd3c3da..9c534a31e3676a35f34932b17376a675d58b4e28 100644 GIT binary patch delta 20 acmZ3@zM7r;G%qg~0}$+6+Psl_0W$zNr3It_ delta 20 acmZ3@zM7r;G%qg~0}wc$Oxwu4fEfTaj|DIQ diff --git a/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-312.pyc index 639c494ed04eef04da6dc0966b44915cdfa0006a..e94635655e7be55d7f73620e97d1fdb9d5c34d18 100644 GIT binary patch delta 20 acmZ3+wv3JYG%qg~0}$+6+Psllni&8#xdjsd delta 20 acmZ3+wv3JYG%qg~0}wc$OxwsU%?toDqXeG- diff --git a/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-312.pyc index 64dab5a9a2bfa63bd4de3e915a1d0c6c9c723b31..854584c1a3646d0ee4963f4b79f98609312603cd 100644 GIT binary patch delta 20 acmZo+YhmL)&CAQh00jG%HgDwq$pip1Xa%eQ delta 20 acmZo+YhmL)&CAQh00hn_(>8MdWC8#%QUy2w diff --git a/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-312.pyc index 50ae6d4e352cbc9f39a560112c7ef1b746023b4c..65020e11caf8121dad6fc7bde1a51adf92f754c6 100644 GIT binary patch delta 20 acmZ3%wt|iOG%qg~0}$+6+PsllmKgvy2?ZGd delta 20 acmZ3%wt|iOG%qg~0}wc$OxwsU%M1WB^8}>; diff --git a/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-312.pyc index 113c7fe98c582da6f7234f451726624e11a75f9e..dbc095346d208f9c059608bde22918de78ea6164 100644 GIT binary patch delta 20 acmbQjHieD*G%qg~0}$+6+PsmQlNkUr=>**X delta 20 acmbQjHieD*G%qg~0}wc$OxwuK$qWE6(*$V% diff --git a/osinaweb/billing/migrations/__pycache__/0045_orderpayment_date_due_alter_orderpayment_date_paid.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0045_orderpayment_date_due_alter_orderpayment_date_paid.cpython-312.pyc index da87d0a3a5530af583d370c371bd81f58ca7517f..8e862a65163c85ea4da497ba83f2af7a3af68695 100644 GIT binary patch delta 20 acmX@aeu$m>G%qg~0}$+6+Psl_J2L=0Jq76i delta 20 acmX@aeu$m>G%qg~0}wc$Oxwu4of!Z*Ck1r? diff --git a/osinaweb/billing/migrations/__pycache__/0046_remove_orderpayment_order_orderpayment_order.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0046_remove_orderpayment_order_orderpayment_order.cpython-312.pyc index 667c80284aaa048fdec8a5ef2d036f20fd523cd6..c25c484def265f14b04c74128bcc4c5da9e9a5d6 100644 GIT binary patch delta 20 acmaFI@s5N0G%qg~0}$+6+PslFnFRnsLIv;u delta 20 acmaFI@s5N0G%qg~0}wc$Oxwtv%mM&EECqZ3 diff --git a/osinaweb/billing/migrations/__pycache__/0047_paymenttype_description_paymenttype_image.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0047_paymenttype_description_paymenttype_image.cpython-312.pyc index 98ab13f3e5a780419d47abec868db2f3f40323bb..bd3bc3b0098a78c6c430dc74f56b4623c36261b2 100644 GIT binary patch delta 20 acmaFO{+gZpG%qg~0}$+6+Psnb0W$zXr3PdG delta 20 acmaFO{+gZpG%qg~0}wc$Oxwu)fEfTkj|K1m diff --git a/osinaweb/billing/migrations/__pycache__/0048_remove_order_status_orderstatus.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0048_remove_order_status_orderstatus.cpython-312.pyc index 75dd444da908158a9f0621be660ece3e20b8cbfe..fc8271196b68ed60b8186897a5423e7afcb8cc7c 100644 GIT binary patch delta 20 acmbQsGna?^G%qg~0}$+6+Psllhz$TXECmMu delta 20 acmbQsGna?^G%qg~0}wc$OxwsU#0CH}76g+3 diff --git a/osinaweb/billing/migrations/__pycache__/0049_rename_due_date_order_date.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0049_rename_due_date_order_date.cpython-312.pyc index 9e1ca4994e00b06f3ed760be5ee8e2a665ae768b..fadbaa45d32b4501f9e6abaf77adbf42253179c5 100644 GIT binary patch delta 20 acmX@jdYYB{G%qg~0}$+6+Psnb022T`Tm}CC delta 20 acmX@jdYYB{G%qg~0}wc$OxwtPfC&IPMg@xi diff --git a/osinaweb/billing/migrations/__pycache__/0050_remove_orderpayment_type_orderpayment_type.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0050_remove_orderpayment_type_orderpayment_type.cpython-312.pyc index e223fb6e583a0f5f4b1c2bf89326580b804985a3..e2c87bb5aaa7bc83e6e3b053aff217b40d551f13 100644 GIT binary patch delta 20 acmbQsK9`;QG%qg~0}$+6+Psl_5;Ficbp?6= delta 20 acmbQsK9`;QG%qg~0}wc$Oxwski5UPhUj+sL diff --git a/osinaweb/billing/migrations/__pycache__/0051_alter_orderpayment_amount.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0051_alter_orderpayment_amount.cpython-312.pyc index 9915222e3744c874ab7c108a676cc81f4ae5eb45..5101ad6cd47f4f3616d1485c7f4fddf7b6922d1f 100644 GIT binary patch delta 20 acmZ3^ww#UoG%qg~0}$+6+Psllh8X}h;RO}| delta 20 acmZ3^ww#UoG%qg~0}wc$OxwsU!wdj3%LJkT diff --git a/osinaweb/billing/migrations/__pycache__/0052_alter_orderstatus_status.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0052_alter_orderstatus_status.cpython-312.pyc index a082c391d91b6f51d2a0cd6c9c1ff501a0b006af..2d003a15766827372b1ae031ffa5958843baf535 100644 GIT binary patch delta 20 acmZ3yQrZc24q%h_%+u>C literal 805 zcmbV}ze@u#6vtm$?`+Q>D6Nx&3Kpzj?;j9B6bF$GY8M9~UQ)e!cPU9qDNatVZvG7- z{vqO`aH0gAoZJfCI+^q=wK&-~T;BJ6^T|uzJx)zIpkwQyS}h=ePb2z~{z*E=+PMJ& z1O*VHBZPpYNIFQ}rw~w7v-`kctz`#!Kcm*2KF7qrD0?Jod?YF}5|tf^at2gutZ03i z!4#3QFbVzW%S=iuv|27ssA*Ee(J3o=ERx(m;pWFEJ7k0gLX8PuQkCKK)EAO+Wgq(9 zIhATMSq~(Z4WXPw?NdzpPNhz;CT9|7Q%dZeg*1{XpHvcG6Q1;0bPFAG!|st=5tIv; z>9!sV-EHPI3?aA{OUB9Uj z&<&o`t;`6-h5oeD2%!&He22NV4amN7E}d7%Jwxt#Cx-bquzpqcVptlk?8dM#T=}!- UDZd;;VQAA+e&q#i*DGVu0IV`!XQLMRaQEWgy za|=Th`^E$%c1HHi&FtS88963baawTj6_*wiI}CDn7!>a_sD5UVVN7Hx IG62c}0C1rglK=n! diff --git a/osinaweb/customercore/__pycache__/decorators.cpython-312.pyc b/osinaweb/customercore/__pycache__/decorators.cpython-312.pyc index 26604cb503913ce03a0c77ddeafd309ba34e050e..a860a349f35f22102b4fff9e7bceed50b4202197 100644 GIT binary patch delta 20 acmdnawVjLmG%qg~0}$+6+PsllhZO)h^94`< delta 20 acmdnawVjLmG%qg~0}wc$OxwtQNtkN$I eo80`A(wtPgB37UnBM=vZ7$2D#85xV1fh+*;)e;f_ literal 6072 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 O>}$r1e=<;|xcV>Vxcn&q diff --git a/osinaweb/customercore/__pycache__/urls.cpython-312.pyc b/osinaweb/customercore/__pycache__/urls.cpython-312.pyc index fa8941401deb1ab8f6b125eb49bc2f97c281c9c2..bd54db7ddaff58b711dbd444bdf1ae6e210b8a14 100644 GIT binary patch delta 115 zcmdlezC=v@G%qg~0}$+6+MG6xoq^#ohyw%CP{!va8`T#wbEJz$NmUwanr!~T9Lc!3 zla-B$QF`(O_W6@NIIaU(3Y;^z%z!!=fw=hcvvb=#cin9rt=$yM?LrS-u+T1;6)nZGI%{oOE@x&-4YP~U zLs7{`SW(a&x){;))a|9BAn-x(p=C=V2vVVXDd@$%uO6C#`Sbt%zcc5|`Of(@@Vwjp z&StX;_`JAvyz8ld#O`L}BYqfC1V!vA95XQ?=1{D|!aW*;PuPi^WndR_wt?NqHUk$S z+YRhN&M|PYk~=JfOEAqdq(h|`>jh-6Gk%dnv;e3G5|Cd+Nc*6KeqRgn$odu_$cw+f3XdoNdFJQCMp`yz2g<*O;Q zBzUiq?9^1g2JYG$rB)2v^v`yiiLHbmxpB4;f*DmXn3pMS#?o$F%LUi-rd^wmxQHUp z<4*EzBwOG{e!bL=R@L9<=ZHATSI1Vn%u<%9qQsO)M}NBvtJE8k@5&&}SD(F2RS!YUwK4`MR{Y+hiL>J0K;su7x3f0S24aTRJh3v-o8gZ`x3B zh2YI9&-&r_JejI5m|YA)#JzY6+)iaM~QFU2)nFze++&a$4+;z)Q$`P<~rh;2O!E u*h>Bk5qB=AuTZ~>jIk+UNm?jM3ngix9PTZ5i)o=0UM_#bw!!rklYap9njIDZ delta 2564 zcmZuzZA@F&8NTQG`xE1fuem1I*yht<2sAWhk+N(HA)pbK@S!ac#4}t|Fa*-$>uMlV zSVYrSjg(|(Y8$m(vaQ>~U{NFY2Y)K1k*0Q9yZY9NF0<&QX_Gdso8&A=UHfC(d+gle zPP>vHzt8)9Uf*+$-=6(+$@yD{!^*%jnpm9rUE5V>HM)1TiLAt{BY zIcg9(N>-g!t{&(mZ$6I~q|~IG#K*`R&Mw0VP@c+s>~yf`2>HY{gT6(=rjQf75^?Hv z3hYyvXDbo%o&*u=0K$6AQ+b%e2zlMzX&9wqCg-luL7G2#MxE;@Z;nY)T#8OCj;xbj z{v*^+1n*iylzM&_Aa9gsCTHVv-ZmFY%F(18lT%4NOU>ituJzjNL)Ohz<|_!_O0x+wxozdB@&}Do&9hHHKAY^&q9t|%mE;RZ zc52#$iv(>P;i@=~?9r5xPIE1mux{!%9`!+PR8`p}gJw<$*2z9C z)n5LurrAxi=9myQhrMsPR+H0T)Zesd5wvo(WYy@h{{Pi*eyK)K8;5n%rp3`T{=GCk z%=k3JEF0vIR(r2uUD{AwzJ1fKEkDsf(0-0w_E;T<|2G6R(Q<4l#xFTGog4JWf(J2| z5_(2%E-{ALEAi!iTZ_q8>MbktdWl)4A7h$L>(fT5;x*l}Np90Jq#4PTHfi~XnQ-M` z808(M*D5-nIyVu=OBE+$PsRiD3vys;AvG_x=h^eKVHS@=65L7Q5J29H#1 zfQAuXV3ST_2@#gFJ%As76PFnY{B+AF1 z?qa4#%F^4u6d|YF!IhG(eOf*@7xrR31mhS5nlta3Nk(HSc{)B1ZjeYSbseD&X6jHi zQrt$P#WF+MGFqs;m4b!Bxw3vTI~Q2i4$VC3sj3_9!dCo*iH4 zM%SzD+n#+dk6j%r7?{v8^pMeote+Yg8}~xr}o);agO`Q{g+e_$=R<k8j@jTa0w-L9GOx2R&LB6g}`w<31mF=oZ?oOoOn z2NZE2Ck`rRA57fmf8Mz*2D3%N3ERHrZGXoDlfJ^ZdVJT;*xgr}vNiqhJ(05wXZ6Fx z!qsG+5iaOZA3>rA^%AdGPu80JVzD=aFO93NjixPJSO8G`<3A9U^U^x2>;&=z#YH zU(4)veej)E|T@eUqj-BCQtqA;DLWc;W~vI6n;$MClr24;SF-Lsl)g)5WOh# zhb9MW_yx!ZNg@1}bseOymkQi!X=Tv{$w!XcHfh+eDBL2EwmQRGAfCvKw9T>(`bTKV zkdmj`y74A?e}BJu3N&FGev^nDC%D^`ly29&9*&I|I4yVVH{1bzG;_P-8DzK%ViJn` z$lzmt*KYwMg9o|?=sjM%ta0%wrgvv?&tN)SOs9tFyfB>(rgOn`MVKxH(^X*FB)&u8 vF8Sbq&-x*VuremOO&%PGkU-bF)kBD3g$HaM8bJ?rAQp;ZVTk;->;8WM7vhk9 diff --git a/osinaweb/customercore/add/__pycache__/urls.cpython-312.pyc b/osinaweb/customercore/add/__pycache__/urls.cpython-312.pyc index 6fa976649443ad71bc64aa828a916e916f181d1b..285e77447632687245787b23217e547620441dd2 100644 GIT binary patch delta 99 zcmbQhww77_G%qg~0}$+6+MKosNIwQ~V1O0M`0O)L-IF7oF^a8{U6W(t2@hsJP4>y# j7)>T?Gu3hl097#pak2X3O-#x>A6QxVnHsr^_<%wH(8m)J delta 453 zcmZ3>Jb_L9G%qg~0}wc$OiSCr$iVOz#DM{JDC6^-iRzvaObn@vDeS2%Sv)X#1f9aM zhHW)7gb!B72~@|2kcY8SxDe{nnWH!=xixtvR(RA`sU?>dm*nTB7U`E{CTFLXloq5U zmZa+2WagDvK}6y+Q|$C_iNn+-rlcUNtg=Vu6{RL7mt^MW>Dv^S6j{M|@gaSW3WRUMF0y`;=bvDgD5}P|Fy{^o4Mzdy~*W`8S$=9)C6HF>H?kx&u~X-W#xQdzb;6HT*!ot+gc zck6>bq)@c$0qui`FM?$w7WByn>8tpXVxi@dN1vofO8TN8IJ0-x6djmz=bZa}=X~c3 zv;F$-CF>W{)DT}kef{CaK<`_V673(mRKy6&b@N+ULd3%HkI+D1__}Q0P`yO|hnB8$ z&*uB!tn&T5bRgL>busEC_|~x5)8WhLtZoe?!9s|hh&;D1k>bL>cnMu-*RZjU5@{*ipD5or2F|vysd|f;+L(lK!cZ(_b3nuT8_6 zGUe<{4Ad~xGkoLPF}Ra2nBExV8`y>Wiu+$0JXQ3V>6;-wJ9~)tRrbFU*+FDf!tyOn zIg=?tE}nsDCB1;B#trvu-(Es*l@RJV?8FNhot@l39wkWnNuFR$$)|1~jUsk(48wWf zfCm$qQ#*w*b{+YOAIHTnVv#spWc-Uu{YWu!86y$BWa;33kk zQq~|%MyEwU-Po*?wJLkZlS4#81S)MF3A8XXZM7Pn6qun`X?7b|357tPk=}=hF(c(* z&gjOXD~vQ?*C>{Zi$g){p&Tdlmj0~^rkR@vR7&tBB{fE07CniZ@zQYD+*lX4NauvM zRHxf+w4=OC}R3ZClyTpoIO2eoMb?!mr8sncwnrPtw^Z zuD9owKKJ`R+e&puvQez>sw$X?l1 zSN2tK(Yc!?bvvxpAhc3%y}jA2P;$M?=Z2{eeh<+L v{6o)k^OyQ6r*!M&HF|}+;`w$K;j40?yoU<=3X-$WBx literal 8456 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 diff --git a/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-312.pyc index 43c9e97e22a69e9f0dcbc403f1829806af1f8a21..2b021ab182e573828f3523470390865b9822d7d1 100644 GIT binary patch delta 20 acmZ3cxJ;4zG%qg~0}$+6+Psl_wg3P-k_FZP delta 20 acmZ3cxJ;4zG%qg~0}wc$OxwskTL1t!d<9|v diff --git a/osinaweb/customercore/migrations/__pycache__/0002_alter_ticket_department.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0002_alter_ticket_department.cpython-312.pyc index e91a511bffd12c8c2d3695364a42e5f75025cd15..35b288292a0fc7073cf7de8ecd1fb6760399cfe4 100644 GIT binary patch delta 20 acmdnZv73YYG%qg~0}$+6+Psn5fCT_LN(EN{ delta 20 acmdnZv73YYG%qg~0}wc$Oxwt9zybg_Gz8-S diff --git a/osinaweb/customercore/migrations/__pycache__/0003_ticket_customer_ticket_status_and_more.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0003_ticket_customer_ticket_status_and_more.cpython-312.pyc index efc4cadc5165722cc847e60a517f0a7bb1e54cc7..7e10665903d7ffcf23883e693cbf89b50707e1ee 100644 GIT binary patch delta 20 acmeC->EYo%&CAQh00jG%HgDu+WCH**gap(8 delta 20 acmeC->EYo%&CAQh00hn_(>8K5vH<`vZUkTe diff --git a/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-312.pyc index bb8014f4c2349f6a310dce287f20385864eb6175..eec268be2d661d530de02faff482991141f07f2d 100644 GIT binary patch delta 20 acmaFO`I?jaG%qg~0}$+6+Psnb0Sf>^?gnW9 delta 20 acmaFO`I?jaG%qg~0}wc$Oxwu)fCT_Q*ah_f diff --git a/osinaweb/customercore/migrations/__pycache__/0005_ticketstatusupdate.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0005_ticketstatusupdate.cpython-312.pyc index b05379079ff130531a316526828834e519e09117..1e08d3315fee9e3ea5df6e20f0f240d0ab7e81d4 100644 GIT binary patch delta 20 acmX@icbJd+G%qg~0}$+6+Psn5f*k-nWd(i! delta 20 acmX@icbJd+G%qg~0}wc$Oxwt9!43d9PX!79 diff --git a/osinaweb/customercore/migrations/__pycache__/0006_ticketupdate_read.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0006_ticketupdate_read.cpython-312.pyc index dcca3dbe53e00687626c883b3273896d4ddac9f2..c39ad06045734bdeb6ae474977365311c020bda0 100644 GIT binary patch delta 20 acmbQkHiwP-G%qg~0}$+6+PsllkQo3qDFpQZ delta 20 acmbQkHiwP-G%qg~0}wc$OxwsU$P55769j<( diff --git a/osinaweb/customercore/migrations/__pycache__/0007_remove_ticketupdate_read_ticketupdatereadstatus.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0007_remove_ticketupdate_read_ticketupdatereadstatus.cpython-312.pyc index 210756dba35dd9998884efaecd34b6e89f904de2..0898d134796acd662d7dc23bde4fb8e88b6a8837 100644 GIT binary patch delta 20 acmaFQ`<|EkG%qg~0}$+6+Psnb2^#=JAO?Q` delta 20 acmaFQ`<|EkG%qg~0}wc$Oxwu)gbe^e3I+=R diff --git a/osinaweb/customercore/migrations/__pycache__/0008_rename_ticketupdatereadstatus_ticketread.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0008_rename_ticketupdatereadstatus_ticketread.cpython-312.pyc index 8a643adae630d79a2eb78cfeb62b4b068ad94934..7578426d8d3cb2ed4e523437a712978c3b1f5174 100644 GIT binary patch delta 20 acmbQjK82n8G%qg~0}$+6+PsmwlNkUt4Fz8S delta 20 acmbQjK82n8G%qg~0}wc$Oxwua$qWE7_XO(z diff --git a/osinaweb/customercore/migrations/__pycache__/0009_alter_ticketattachment_ticket.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0009_alter_ticketattachment_ticket.cpython-312.pyc index 0c1a67d520aa1a8b90ba882aeb7ab2604676eb6e..93d51dac7d9a4357022462eba9776766a9db17cd 100644 GIT binary patch delta 20 acmZ3+v5bTJG%qg~0}$+6+Psllngswi0tFZV delta 20 acmZ3+v5bTJG%qg~0}wc$OxwsU%>n>3>;$9$ diff --git a/osinaweb/customercore/migrations/__pycache__/0010_rename_ticketreaction_ticketupdatereaction.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0010_rename_ticketreaction_ticketupdatereaction.cpython-312.pyc index 993814af9abbce610c3a8da35494f6c4304d6d22..99250d2c2de3d42b9dc1b89813299e662fc7c68e 100644 GIT binary patch delta 20 acmaFJ`jD0TG%qg~0}$+6+Psnb8WR9O%mzUK delta 20 acmaFJ`jD0TG%qg~0}wc$OxwtPjR^ofwgt@q diff --git a/osinaweb/customercore/migrations/__pycache__/0011_ticketupdatereaction_customer.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0011_ticketupdatereaction_customer.cpython-312.pyc index 1be84c5a6c90a979becde084c6f9ff23b24b7873..789363f275f701dbfc9f25825f6e729cd59a678e 100644 GIT binary patch delta 20 acmX@id6<*?G%qg~0}$+6+Psl_2MYi^t_AS` delta 20 acmX@id6<*?G%qg~0}wc$Oxwu4g9QLNm<4?R diff --git a/osinaweb/customercore/migrations/__pycache__/0012_ticket_ticket_members.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0012_ticket_ticket_members.cpython-312.pyc index f0086850c05da5414d8017544d6ab9f329a4d2d8..373adf5b556834c51de272c545a8850a17558145 100644 GIT binary patch delta 20 acmeC;=;Gi$&CAQh00jG%HgDwq&kO)Gp#{SL delta 20 acmeC;=;Gi$&CAQh00hn_(>8MdX9fT>r diff --git a/osinaweb/customercore/migrations/__pycache__/0013_alter_ticket_ticket_members.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0013_alter_ticket_ticket_members.cpython-312.pyc index 63ad35d47b1be9c67c5f2acc3a86858684359270..0abdbe0ffa5f51acf5e57b2f38ead75e57393095 100644 GIT binary patch delta 20 acmZo?Z)fK|&CAQh00jG%HgDvvVFmy*1qC<& delta 20 acmZo?Z)fK|&CAQh00hn_(>8L~FarQD?*zmE diff --git a/osinaweb/customercore/migrations/__pycache__/0014_remove_ticket_department_ticket_department.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0014_remove_ticket_department_ticket_department.cpython-312.pyc index 897d4337c35c6a90fa47ad9e668824756712ee1e..4fa4a17f7cfd7c301f6ede752b73337a61e0c065 100644 GIT binary patch delta 20 acmcb?euJI+G%qg~0}$+6+PsnbEHeN;`=R delta 20 acmey$`jwUYG%qg~0}wc$Oxwu)iU|Nf)&>ax diff --git a/osinaweb/customercore/migrations/__pycache__/0016_rename_ticketstatusupdate_ticketstatus.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0016_rename_ticketstatusupdate_ticketstatus.cpython-312.pyc index 6f8d7c1e8608de42e76ac4b26279755ba3427e57..187d68cf8e89e5a6a033459ebc1bd962ec58a5c5 100644 GIT binary patch delta 20 acmZo=Z)N8`&CAQh00jG%HgDvvVg>**wFNQ& delta 20 acmZo=Z)N8`&CAQh00hn_(>8KfF#`ZEp9H=D diff --git a/osinaweb/customercore/migrations/__pycache__/0017_tickettask.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0017_tickettask.cpython-312.pyc index a1018e09c62438fbe2c8979fac787c0ad7be14af..ac9dc740af2ad3509b570a156c1fefed5bbd18d8 100644 GIT binary patch delta 20 acmey&^_h$NG%qg~0}$+6+PslFgB1WnQw9V8 delta 20 acmey&^_h$NG%qg~0}wc$Oxwtv!3qFCJq3^e diff --git a/osinaweb/customercore/migrations/__pycache__/0018_alter_ticketattachment_file.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/0018_alter_ticketattachment_file.cpython-312.pyc index 60b3a25306db01f87642c90bf0d1892ff1d81302..5ff0b153b3301aa8af1212211d3ea812ec30242b 100644 GIT binary patch delta 20 acmZ3HV%6u+}m*Kra^+LVG2EvPNvp>+j_0U;!$s+CaNp&v^IPOk47(#CeM9ja^~ zIxsM>@fR?l_HW=H=+vpvtxRl@+Af{A51UlQLB_-Ry?4L&aliNOj!Gp1u5XU&~Ne=`U7`vRju|eEqO|0HsBAF%476fEmev z8O?yHX26VPz})C#>Z7&c&bWD#=2wy%U@Elew8O}EN#OVap-<=MA3a8xG)Y9zcB4s9 zKwSSFK~clmC6OIPw)4g%UL-ed4EvIkA@H9%{F+9T93s zH6S*oxpqhbT9lTMC2WUOw=pIdZFLf4WQV&nC)OAlN2*Fcsj+wtzvfg=j!3l)aSRg% z1=ed?mg>ttr=o_mtnpHcQeKxu#5)^2b-c4F%dbkD)R?D8x@ziFN8->3Q3ElWaGTMI zXc3{eZM(^d;2I_^;$h-B4H5?Y!J>sVLHS~XG%+nKh+eF43aR0@Nc?nt2d8{mFFsqF zjIhx1!$#!zuC?GhZQh^ITD2p)+2I?WJ&Sj2ukKqO*%NxK3VDxgSqVXW2CV-3Xt8N{ zGH?PS!6iy&V6N2(_+u>=jS1lqyHNX}r-A%B?5Rpsd%xT>Kz{O*aiUKg>l58^vs<}! zHl*f_o_^JSH_blPtqih{r{QP1mD>aCsd-ua)HuwZivQpEvjgg3_Ox@cq^iQmVGQ<3 zt4yUC@1z+g(~Q}X52X8&vIs}C53homq`Rx8O7n7t=J1x7TG{$(ju5c>OuEpY%c*}6 lJY*_=Uc(8t^i&Apxd!09Gi@0{?Tc|zo<1&5p98K5|KFF$*k=F$ literal 0 HcmV?d00001 diff --git a/osinaweb/customercore/migrations/__pycache__/__init__.cpython-312.pyc b/osinaweb/customercore/migrations/__pycache__/__init__.cpython-312.pyc index a387d8c8d9cdbae6ed66cc9e93436abe4de6b16f..8fa5a3a9b8225d1d4fa11f9bc41a9d207e08ea4b 100644 GIT binary patch delta 19 ZcmX@fc#@I(G%qg~0}$+6+B}ha9{@Hh1wgv!5;sxda diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index a9482e6c5c59c7e9c3ad501aeaca452bb9f2c65f..c8e1bace01d1b085fdbedfbf841fa4ced31fcd95 100644 GIT binary patch delta 1265 zcmaizNo*Ts6vsU?UgDLcu|*n?NYl7d8rjUgm~!wMJC5zdPVB@v5U&$2V~_3e${|jQ zNr4I#MU@4|)(4OfqJ(Oyv_hOfssx8tIdDJ%QN)2F1tcWIA~9sS6d^w8r}qy3@BQ_@ z_r7j7+U-WKJp(*^>shDbq0HKN{Z{(XMde_u24P_TR@7kJP0qXn+}ZnUhGWtc3QK3I zmW|J{h%1cOnsuhLQVgXdMQ3Ts!}BWwS3~%v`FOd7gD~jl_fVHC)}wZ*AlYu zRIXHeKHPD5(1<&^EChV1sH5VWt^3>aGvQX$8(xiZL}9s6#a--^PPh$6tTaNvBz}2~ z-C1J+2~Yx(kV_~eloBe5AqlmFMqFdH@BIeU`-*klkDy^){AFEtP7f^f$Iqz8`__^U zop=tigQr~~Ygx{we^<xFGf(>9O}gd0*VWW-x&l%}@X&Q)oU}sN_m?jov7hD{YqI z7>uLa0@5rqbOJE_qw2pbm?p%tyM`+xlLe+)qxclp=#XVhV4KxeCnr?XnRd2FZ?w=f zVA}os-RYgj1B1j<;^V>a*c;G5V-{8Lh!aq1UeLfA^WGMJFm!HcYf2$ggMjRwXK3sE zae7xuCy&yL47B5_9a*hW9O4GpvhqUvx|s-pc~`?dB!s?yVpsUQ%P-IEQD;$7Lz zqqr}-A^!Bo=+ihf(AgzxqZ8;K4l9(>m7g`Hqc@Qaj>FC4a6^noL>OP2waZX|F5JqGuMiC0`5>VXJ2##9WUXrwl9L(d2bb?T(R(mfcTK0vm~^$ z`378B^fpptl1pa%f*&p>3ur7fKTG;O&Jxycg|mffnhi6{n-sMWN+IZqKf^I)mJuxZ zM5o~=yo|-dE;|KgDP|{POBvkdUuaj4J6aIcLiPqf$;N)$62Gfm$Z#wRj4NqZLK*3Eylb1f(L zC$h&nMumHs8~D2gsY8F{27I!9zAX`AMz1(q0Dm_``{xEGZA zmX?|q2e_2yghU1!7G*e^8rT{c7@6oAnCTi>C>R-785seQo{^D(sgddCbE%q)lLNBY zV_k!@szMA>jDmCXD~t@>%u`Lxk^{q40!`c;y(0`#GRs{J0=xqpQ9zLw@0Tl0x=U1GXpUT z5VHa?8xXStF$WNH0x{S2=ydLtKNw4<=Mye5`z~tjAG~3@S;R9m+?QfO{NOUtV>q@|l8d>vzx^#NZo<5fCk&`V1T4tIy*Rnfxgk${()UoBtwFWrHFxd6Hh010+%JH a0Q+;kn`{SIXR;IlwT7{5FDeo3;|2hQ1kXJH diff --git a/osinaweb/input.css b/osinaweb/input.css index 06ae8f3b..339ab8af 100644 --- a/osinaweb/input.css +++ b/osinaweb/input.css @@ -96,6 +96,26 @@ transition: opacity 0.5s, transform 0.5s; } +/* ANIMATION TO TYPING CONTAINER IN TICKETS ROOM */ +@keyframes fadeInAndUp { + from { opacity: 0; transform: translateY(12px); } + to { opacity: 1; transform: translateY(0px); } +} + +.fade-in-up { + animation: fadeInAndUp 0.6s ease; +} + +@keyframes fadeOutAndDown { + from { opacity: 1; transform: translateY(0px); } + to { opacity: 0; transform: translateY(12px); } +} + +.fade-out { + animation: fadeOutAndDown 0.6s ease; +} + + /* FOR THE IFRAME TO TAKE 95% OF WIDTH ON SMALL SCREEN SIZES */ @media screen and (max-width: 798px) { diff --git a/osinaweb/osinacore/__pycache__/__init__.cpython-312.pyc b/osinaweb/osinacore/__pycache__/__init__.cpython-312.pyc index 5ccb653795e718195ed1825711aba4bb27a193a2..a217f2488d3b7d00811bf9a025549b6039a2d8d2 100644 GIT binary patch delta 19 ZcmdnZxSNstG%qg~0}$+6+B}ha0{}E71*HH0 delta 19 ZcmdnZxSNstG%qg~0}wc$Oqu diff --git a/osinaweb/osinacore/__pycache__/forms.cpython-312.pyc b/osinaweb/osinacore/__pycache__/forms.cpython-312.pyc index 07816681a92a21ac170047b68eec3c169ce3954e..db4bea13010caf94769c7c88801f96ac3b19dcac 100644 GIT binary patch delta 20 acmeyy`HhqNG%qg~0}$+6+PsnbH46YlrUr@t delta 20 acmeyy`HhqNG%qg~0}wc$Oxwu)ngswskOme2 diff --git a/osinaweb/osinacore/__pycache__/models.cpython-312.pyc b/osinaweb/osinacore/__pycache__/models.cpython-312.pyc index dd6a44190e7e1fddfbafdc1894e7e1e8b773c41f..d3e59841a02af7c6510381c6dba9583a40f50138 100644 GIT binary patch delta 512 zcmXAlUr1AN6vy}dt$uF9tAl3O)*4G}7EDA-DlUzQ#ERQ!7fM^|OqAV-_R@_C`Xd$^ zrar_Wh$t3lB_+W;R1ZNEt|tj5z0^Z%SP(%y^b*lSbZ?!<59j;+9L{(d<7FtzisEzG z^Wxr>TuV{8DB-6mIR=H4nm<@iwVneA%w{}5h>m(=2=Y~LRiKrR*FF$vV}Jd5Ai~rB z$8ID^3*5kdS_zCoXQLq{km7=R7tlDd;TzCLMnjO28!H%~XvmToTWp0X-L3M|PzPYr z*G(toh(ovAw2`fFv%qP-8PNsK@aLv&K%VQGqXL(?Gdc!L)3cVCocy22dep_OF*okm z?)#v(u{jj@T$4(NumJ4-5RHkBMve!6&+^z;D*O z-$1y)!M$D~YiyB~r(%!FiR5jG&HN!{3)|U9+eg&%Yh%@Ie{KG-8|dPN9@UM0E@i#| z!?e&>MK90v?-8(QIXf!zPT7TjW#-@`;4H5jDnVXy@DT@-IT+`TVH23(TO&^ZAEk3e NSfkNrE7ofOYp z!l^TvP+mJHQARnLg^#q=e-I#_+KP&)lnT^Px7R=wU-T9Q3_jwU5oqA@vJqe%UoD?g zu%9CS>xk1U|0oWy8E6w|Z@Eu2czwB#cjAi%MqOyqCtTlv=Y05?>w}(2>j$k z^9zXI9Dx#god-ez%qowqy9CFLf{wuS3?*k{eqJI%`#Km1MCaX8fjRO{No^K951XN09 P@)#sx)jPjkZx#On_4T72 diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-312.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-312.pyc index e1fd0db1abbb47ca6b5a21b419be2ed1b409f211..3c3d997af0e6f0306472e6f3a68830b0ef6e4276 100644 GIT binary patch delta 1272 zcmZY9%TF6e90%}Sd;EeLN)oTVcEE<(_|X^#J0@;Iy`h0Xv3WT$7*a%AycD6NA*3V? zeUPe`^ybwZa8KPHs#qciS}v9#47n-5XYh)pcytJ80}Y9fyqEMe{Zz*IZ#$*84|M|EN}wF<2w*68!a?_cAT$UHn@j%ch|S|U=9UynpDEzCJEBM5TgqXSs$211GCz~9SrW0UI`wZ435#k{#to& zSy^s~7-UFXg2dxnq1_k$d23NAs*mUnBxyWA<3LT;g(woDjk_2OlN5!E6zGoSm3*U( z4jZI#`hRgof_DU;pW+b3p1MaD6G%)PbYmcq%Mw%t-zCadC)D-Q>shn#Uq`lt!EG|fuw-IT_2|86)SGSw zF?f^QWOmE6h`Oyu^C+4>dJBURDKncltxp}(!#NbrHFq$WBn!+cCk8!Y=k6kl-loy% z8~qN0cNutnkb$+x3#>jh2 z-Z$kHwft=5>y_qJ493aGJw}@*We&=Eb`E9dw8|z1_sM;RTPB9oh~6imK4T}1AG%B) zF#G@#pWxVL>xZyI6m}o6^@p_SzqjErqaAY|JDCZTn9yccF{qM{7=Fz9*fq%^f3Eo{ t2GisdN>AF!8y1d#>5GT8bzO)dA=Y&2xdO@+aAy&5#n0Neri?$2zX9iIizxsA delta 1347 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 diff --git a/osinaweb/osinacore/api/__pycache__/urls.cpython-312.pyc b/osinaweb/osinacore/api/__pycache__/urls.cpython-312.pyc index e528ce69360d45c664d1a74fc5b44cb28e08b5dc..37350ba75c993bf5dbb48d5e072f597214cb8e26 100644 GIT binary patch delta 20 acmeBT?qcRX&CAQh00jG%HgDvvX9NH;>jgIe delta 20 acmeBT?qcRX&CAQh00hn_(>8L~GXelF)da%; diff --git a/osinaweb/osinacore/api/__pycache__/views.cpython-312.pyc b/osinaweb/osinacore/api/__pycache__/views.cpython-312.pyc index b91a5ae3d690d1b71b1ec70bdb83515825eda12d..ef817eda90c528902622a6cbee7f417c7f9094d1 100644 GIT binary patch delta 20 acmZ3-zmA{#G%qg~0}$+6+Psl_F*^V{K?T78 delta 20 acmZ3-zmA{#G%qg~0}wc$Oxwu4m>mE&D+Nse diff --git a/osinaweb/osinacore/delete/__pycache__/urls.cpython-312.pyc b/osinaweb/osinacore/delete/__pycache__/urls.cpython-312.pyc index 5aad379e0160b2cf629e2da360a93e880faf5f10..526504dbdfb9ed4461dbab92526ed576b6bf5420 100644 GIT binary patch delta 20 acmZ3(w}y}VG%qg~0}$+6+PsllksSay%>_9C delta 20 acmZ3(w}y}VG%qg~0}vP~mTu%$WCs8-n*rc~+A9G%qg~0}$+6+Psnb5Dx%Ah6XnP delta 20 acmX>rc~+A9G%qg~0}$xxm2Bib!~+01fdwG| diff --git a/osinaweb/osinacore/edit/__pycache__/views.cpython-312.pyc b/osinaweb/osinacore/edit/__pycache__/views.cpython-312.pyc index a85cab83b368d280b6e40b22da0461ee417afc5a..efa8729c2c435cc783ef76d471e9afe04b3afe1b 100644 GIT binary patch delta 22 ccmcb2hwZD!>@&CAQh00jG%HgDvvU;+R#90ex; delta 20 acmZo>ZD!>@&CAQh00hn_(>8KfFaZEB1_ZMJ diff --git a/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-312.pyc index ce1689f687af332e17dae7bb8f68cfd72e5db832..a04f8627277057fb53bfa1586b1d82bbfadf5475 100644 GIT binary patch delta 20 acmca3dqt^FV&CAQh00jG%HZSC61^_LR1hN1C delta 19 ZcmeBX>t^FV&CAQh00hn_(-v|w0{|-U1U>)& diff --git a/osinaweb/osinacore/migrations/__pycache__/0006_note.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0006_note.cpython-312.pyc index 47b838d335c308f45d77d55acd0c4f0fd3bf374e..1bdfe57d9c5a5e5d5c8d2797cef4980c64f6fb9d 100644 GIT binary patch delta 20 acmbQrJC&FFG%qg~0}$+6+Psmwiwyua5Cw4n delta 20 acmbQrJC&FFG%qg~0}wc$Oxwua#RdQ}`UL#| diff --git a/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-312.pyc index 031de3507569aad7fca2164c63d560817d4dd8c7..4feb06f29b7926e9e396d71d3981a235e8244adb 100644 GIT binary patch delta 20 acmZ3)v515FG%qg~0}$+6+PslloCN?jVg(EU delta 20 acmZ3)v515FG%qg~0}wc$OxwsU&H?~4Oazz! diff --git a/osinaweb/osinacore/migrations/__pycache__/0008_alter_project_project_id.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0008_alter_project_project_id.cpython-312.pyc index 3fea60077be13640e83fd15456c8fccc1bfdd1ad..e855b4cbce45279c789a8f0d46a12ad6f83de65b 100644 GIT binary patch delta 20 acmX@gc9f0#G%qg~0}$+6+Psn5iWvYqkp*x7 delta 20 acmX@gc9f0#G%qg~0}wc$Oxwt9#S8#Adj$Ld diff --git a/osinaweb/osinacore/migrations/__pycache__/0009_alter_project_project_id.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0009_alter_project_project_id.cpython-312.pyc index f4075ec30928b9c17043a6df61f29d26391f1836..2700d65334ff41cc7ce7981cc390ce9281507dc2 100644 GIT binary patch delta 20 acmdnWwv~He delta 20 acmZ3$x`37YG%qg~0}wc$Oxwskl?ebdjs*$; diff --git a/osinaweb/osinacore/migrations/__pycache__/0011_note_date_alter_note_color_alter_note_text_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0011_note_date_alter_note_color_alter_note_text_and_more.cpython-312.pyc index 2fb7e105182ac39a2850828f156b659d147fbcd6..2495c3d02009e5e8604a56bdc19a72b56ff02c4e 100644 GIT binary patch delta 20 acmbQhH-V4)G%qg~0}$+6+PsmQl^p;yZ3N{2 delta 20 acmbQhH-V4)G%qg~0}wc$OxwuK$_@ZAR|IhY diff --git a/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-312.pyc index 7c954094da03179c011f233e84d174198e738a83..4ee5c5b3dac483f8fc9ca643d53159fb39b0e97a 100644 GIT binary patch delta 20 acmeC@>gVD<&CAQh00jG%HgDu+VFds)vjo@x delta 20 acmeC@>gVD<&CAQh00hn_(>8LmumS)uodje6 diff --git a/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-312.pyc index 235cf2a63b0b50b270e10d7f76527d1be28f2e9e..752dda9c449f94037e5fe0f3031de2a0708e360e 100644 GIT binary patch delta 20 acmZqTZsO)X&CAQh00jG%HgDuEX9WN<&jm98 delta 20 acmZqTZsO)X&CAQh00hn_(>8LKvjPAwxdgue diff --git a/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-312.pyc index ccd2024db4f4bdec973e10e5c51de03bc7335f30..d886377979d5c46623e608be00b60d09724caa05 100644 GIT binary patch delta 20 acmbQnHjRz@G%qg~0}$+6+PsmQn;8H!IRxVX delta 20 acmbQnHjRz@G%qg~0}wc$OxwuK%?toBBLr^% diff --git a/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-312.pyc index 60bdd2545c3c29c61b041500548d2e5b7ff5198a..0708e24d9a2e2a6836528c7679cbda221459e899 100644 GIT binary patch delta 20 acmeC+?%?J=&CAQh00jG%HgDvvWd#5;zXe4A delta 20 acmeC+?%?J=&CAQh00hn_(>8L~vH}1wsRYpg diff --git a/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-312.pyc index 57b85503933749cf989f88c0b937f3870293d3ac..2a1eefba9b89486991606cdc809124cc2423d0eb 100644 GIT binary patch delta 20 acmcb_dWn_$G%qg~0}$+6+PsnbI1>OqbOsav delta 20 acmcb_dWn_$G%qg~0}wc$OxwtPoCyFsUIm~4 diff --git a/osinaweb/osinacore/migrations/__pycache__/0017_alter_project_end_date_alter_project_start_date.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0017_alter_project_end_date_alter_project_start_date.cpython-312.pyc index 464347346a33a4e8c9f07f188e3c73e2ba5fc68d..0562899e23ad795e127ca19b92de8fa5f3f88032 100644 GIT binary patch delta 20 acmX@cevF;_G%qg~0}$+6+Psl_H!}b{-39dk delta 20 acmX@cevF;_G%qg~0}wc$Oxwu4n;8H(#|41^ diff --git a/osinaweb/osinacore/migrations/__pycache__/0018_epic_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0018_epic_status.cpython-312.pyc index 1db33d603178a451898f4c1b799d681e0291c290..b9014992c8d6c62717c8215afd66bdd94ff62b1f 100644 GIT binary patch delta 20 acmaFF_K1!9G%qg~0}$+6+PslFoEZQ>83o4x delta 20 acmaFF_K1!9G%qg~0}wc$OxwsE&I|xO0|iq6 diff --git a/osinaweb/osinacore/migrations/__pycache__/0019_alter_epic_end_date_alter_epic_start_date.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0019_alter_epic_end_date_alter_epic_start_date.cpython-312.pyc index 5c43ef302f84cb4e4b2932f2569de0ebea8cd606..dcc1ee2c3739be13a7544e1500b7beca42415a72 100644 GIT binary patch delta 20 acmbQkK8KzAG%qg~0}$+6+Psl_A~OIsO$B!V delta 20 acmbQkK8KzAG%qg~0}wc$Oxwskkr@CpHw6O# diff --git a/osinaweb/osinacore/migrations/__pycache__/0020_task.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0020_task.cpython-312.pyc index c55ae9158eca5e8967a95207c4995eb3e270f77b..d937d8cb01c357aab1c9c621746ec2089c71b59d 100644 GIT binary patch delta 20 acmbQnKaHRJG%qg~0}$+6+Psmwn;if)fdzR0 delta 20 acmbQnKaHRJG%qg~0}wc$Oxwua%?wnB{iG%qg~0}$+6+PsllmKy*$Q3XK& delta 20 acmZ1>wnB{iG%qg~0}wc$OxwsU%MAcFI|R)D diff --git a/osinaweb/osinacore/migrations/__pycache__/0022_customerprofile_customer_id.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0022_customerprofile_customer_id.cpython-312.pyc index a4134d56043490da9e3edec94f45b2256fd9fec7..7077d2271fdb951d334f25a48e8d0316a76d4cd4 100644 GIT binary patch delta 20 acmX@lcAkyA delta 20 acmX@lcAky|Y@ delta 20 acmbQqHj|C}G%qg~0}wc$OxwuK#|!{5n*?|O diff --git a/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-312.pyc index e76d5539609ea411d1d26961af2bc524b985c3e1..10e80971013fe68cb290faca86b39a50be34719a 100644 GIT binary patch delta 20 acmZ3%vx0~FG%qg~0}$+6+PsllmJI+mn>1Yy@-w diff --git a/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-312.pyc index 6bc403f340a8434a1b918aa5d66d0b59f16d2bcb..aaeb2f7803a2c37060c0acb87ed6845cba36900d 100644 GIT binary patch delta 20 acmZ3*x{8(iG%qg~0}$+6+Psl_J`(^qGzFXh delta 20 acmZ3*x{8(iG%qg~0}wc$Oxwskp9ugp9t9`> diff --git a/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-312.pyc index 915ea5a15dab42d6f182286963b4ec990c4712bc..d1c884a9b08997f6a1683c2eef28b7b0210fa1e9 100644 GIT binary patch delta 20 acmbQvHl2<8G%qg~0}$+6+PsmQhZz7gVFcy? delta 20 acmbQvHl2<8G%qg~0}wc$OxwuK!wdj1O9XNN diff --git a/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-312.pyc index df194e6b0faddada9b7d33f0291546a66c357e2d..6718c3e2c887e313ed6bc4f9ea59c4f46e1d0c22 100644 GIT binary patch delta 20 acmbQvKAoNWG%qg~0}$+6+PsmwhZz7hg#~B; delta 20 acmbQvKAoNWG%qg~0}wc$Oxwua!wdj2Zv^xJ diff --git a/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-312.pyc index b0801b98d29c1c1bc69b5b0845333bf33dcc632c..67253db340f55af98f6527030cc3ea515fc0682f 100644 GIT binary patch delta 20 acmbQsHkXb2G%qg~0}$+6+Psllh#3GiQ3Ut^ delta 20 acmbQsHkXb2G%qg~0}wc$OxwsU#0&s3I|PIP diff --git a/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-312.pyc index 6214d231c50d65990af6ebb3045e7e6dac043af8..e000f6f447e4058cf4fd347ea4b20b0cd8f44612 100644 GIT binary patch delta 20 acmbQrJ(ZjLG%qg~0}$+6+PsmwixmJh#|3Nv delta 20 acmbQrJ(ZjLG%qg~0}wc$Oxwua#R>p2u>|-4 diff --git a/osinaweb/osinacore/migrations/__pycache__/0033_point_date_completed_point_date_workingon_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0033_point_date_completed_point_date_workingon_and_more.cpython-312.pyc index f766f23936c99313da8009f3b650e0a2e461f706..f8256a9b4c993867e49fcd759e780b872c6e69c7 100644 GIT binary patch delta 20 acmX@id6<*?G%qg~0}$+6+Psl_2MYi^t_AS` delta 20 acmX@id6<*?G%qg~0}wc$Oxwu4g9QLNm<4?R diff --git a/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-312.pyc index 67d820abe7f7c564d4bd0a7768dbe44d2bf036b2..efcbc74f30af93f9c26c39d531bd84724164b7c4 100644 GIT binary patch delta 20 acmey(`J0pbG%qg~0}$+6+Psnb0}B8}ZU&hE delta 20 acmey(`J0pbG%qg~0}wc$Oxwu)fdv3USOz5k diff --git a/osinaweb/osinacore/migrations/__pycache__/0035_business_business_id.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0035_business_business_id.cpython-312.pyc index c7c52c7911a0fb2d03a629789fdf184efb7b9d0a..83ead4741b7d5423c9996ce1c03c10397c5ec2e4 100644 GIT binary patch delta 20 acmdnXwwI0jG%qg~0}$+6+Psn5h#3GnQ3Y54 delta 20 acmdnXwwI0jG%qg~0}wc$Oxwt9#0&s8I|Sqa diff --git a/osinaweb/osinacore/migrations/__pycache__/0036_staffposition_alter_staffprofile_position.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0036_staffposition_alter_staffprofile_position.cpython-312.pyc index 06a8a5dffac37c790115e32d3ece5c0de401f728..6d2f4013be04877fc033baebe1f752e0cb0c726d 100644 GIT binary patch delta 20 acmeC+?BL`+&CAQh00jG%HgDvvWdQ&)b_GBH delta 20 acmeC+?BL`+&CAQh00hn_(>8L~vH$=uU8MdVg>*(!v#P9 diff --git a/osinaweb/osinacore/migrations/__pycache__/0039_alter_staffprofile_staff_position.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0039_alter_staffprofile_staff_position.cpython-312.pyc index 324bf63ed5226da4bf4457d4a324ca6dce54f029..a8a3d6a5931a72876b0e9f8cbb1fd7a65e634e1f 100644 GIT binary patch delta 20 acmbQoF^_}$G%qg~0}$+6+Psllm<0ee!UX^T delta 20 acmbQoF^_}$G%qg~0}wc$OxwsU%mM&1tOSez diff --git a/osinaweb/osinacore/migrations/__pycache__/0040_staffprofile_staff_id.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0040_staffprofile_staff_id.cpython-312.pyc index 868c596a496f4bd5e937e90af694142f97f79e2c..7f94b79e5bd8a4fb6c2915d24520c0091f2d5c36 100644 GIT binary patch delta 20 acmdnXwwI0jG%qg~0}$+6+Psn5h#3GnQ3Y54 delta 20 acmdnXwwI0jG%qg~0}wc$Oxwt9#0&s8I|Sqa diff --git a/osinaweb/osinacore/migrations/__pycache__/0041_dailyreport.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0041_dailyreport.cpython-312.pyc index d880a208caeaa4cdfb354814af1baf305efba616..c22abbc28cc5ffdb20120c88fbd0dda925960407 100644 GIT binary patch delta 20 acmdnZy_=i+G%qg~0}$+6+Psl_11kVKw*}q+ delta 20 acmdnZy_=i+G%qg~0}wc$Oxwu4ffWEap#^FH diff --git a/osinaweb/osinacore/migrations/__pycache__/0042_remove_customerprofile_email_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0042_remove_customerprofile_email_and_more.cpython-312.pyc index 4c7d0e546c5592c113bcfc2a53b31505a08d6576..f5c22d21610a9118bacdab22ea2abf85248c55b2 100644 GIT binary patch delta 20 acmbQrIhB+9G%qg~0}$+6+Psmwiv<8Reg$U$ delta 20 acmbQrIhB+9G%qg~0}wc$Oxwua#R32_Xaw^B diff --git a/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-312.pyc index 2e2718bfde2753265ca7b9cffdcb90f34106f98a..3cfc3bf569bb9aa34db0b79095d8ccadc1c59df3 100644 GIT binary patch delta 20 acmdnZzMGxg3`+&CAQh00jG%HgDwq#{vK}!Ue?u delta 20 acmeC=>g3`+&CAQh00hn_(>8MdV*vm$tOZd3 diff --git a/osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0054_remove_point_date_completed_and_more.cpython-312.pyc index 0a44f82a532630a04094ecb4ccc234bef51acf14..ac257ecf9a9f44a82286899c2f253821574c7502 100644 GIT binary patch delta 20 acmbQoK98OIG%qg~0}$+6+Psl_GBW@+odtaW delta 20 acmbQoK98OIG%qg~0}wc$OxwsknHc~xhXn}$ diff --git a/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0055_alter_point_status.cpython-312.pyc index 15e9c447bdbc494b32a3f67d59cb43f8f9faffbe..487a6d98e124f8d29c008fab48cb1dda435de2f3 100644 GIT binary patch delta 20 acmbQqK9imMG%qg~0}$+6+Psmwj~M_p)dg+< delta 20 acmbQqK9imMG%qg~0}wc$Oxwua#|!{6zXbXK diff --git a/osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0056_alter_pointactivity_end_time.cpython-312.pyc index 9e923c5c31c4a3d964d0227266b45ee425bf3bbd..edf19acd7ac09a1b118150b398b1268b4c5b5329 100644 GIT binary patch delta 20 acmZ3+wv3JYG%qg~0}$+6+Psllni&8#xdjsd delta 20 acmZ3+wv3JYG%qg~0}wc$OxwsU%?toDqXeG- diff --git a/osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0057_point_total_time_hours_point_total_time_minutes_and_more.cpython-312.pyc index 089b6a6b5fb3a6d56b54133523609c19628a93e4..4bc70ed81099883a9bcd04aca67c20ef55d7d8c4 100644 GIT binary patch delta 20 acmcb}agl@jG%qg~0}$+6+Psn5jRgQbx&@g4 delta 20 acmcb}agl@jG%qg~0}wc$Oxwuq#sUC3qy;4a diff --git a/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-312.pyc index bd9823fbe0d4568ba63bf983abad785435218cce..9a9d408ccc18728e6e774e7137927cb045a9590a 100644 GIT binary patch delta 20 acmeBR?_lRX&CAQh00jG%HgDvvWd;B8L~G6MiG7X-%u diff --git a/osinaweb/osinacore/migrations/__pycache__/0059_alter_task_requirement.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0059_alter_task_requirement.cpython-312.pyc index 10c849563ea826627cf29f3efb8abfc5413b0dcd..4ff42db5fc783814aee94d0e18f59af8a25f725f 100644 GIT binary patch delta 20 acmbQmF^hxyG%qg~0}$+6+PsmQp9KIlA_VjR delta 20 acmbQmF^hxyG%qg~0}wc$OxwuK&jJ843 delta 20 acmbQwKA)ZYG%qg~0}wc$Oxwskg&6=duLTSM diff --git a/osinaweb/osinacore/migrations/__pycache__/0062_connection.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0062_connection.cpython-312.pyc index 143e2dd262c452337ec26e16267d4a021179a204..b1c2cafe7f469d58f31e734af65dcab8f4159a22 100644 GIT binary patch delta 20 acmbQoGmnS+G%qg~0}$+6+Psllm<<3nR0RqE delta 20 acmbQoGmnS+G%qg~0}wc$OxwsU%mx56J_MEk diff --git a/osinaweb/osinacore/migrations/__pycache__/0063_alter_connection_date.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0063_alter_connection_date.cpython-312.pyc index 3108bf765b13573e97fa52d5b355e4d6cd82540b..34b40e30a4528e3917d667029986a5fd5349104b 100644 GIT binary patch delta 20 acmZo=Yh~j;&CAQh00jG%HgDwq#RLE|kOi** delta 20 acmZo=Yh~j;&CAQh00hn_(>8MdVgdj#dIdWG diff --git a/osinaweb/osinacore/migrations/__pycache__/0064_reaction.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0064_reaction.cpython-312.pyc index 7f7702ed0f7a5d6c21d5511cb58ec7072b5e1bc3..ef6133b9c60749b6bceb9e7f367f9ad76222519f 100644 GIT binary patch delta 20 acmdnPvxkTKG%qg~0}$+6+Psn5kPQGk1O;RO delta 20 acmdnPvxkTKG%qg~0}wc$Oxwt9$OZs6?ga1v diff --git a/osinaweb/osinacore/migrations/__pycache__/0065_alter_customerprofile_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0065_alter_customerprofile_status.cpython-312.pyc index c53e74fd3c35cba70520e9d01946c07cd2f90525..361c74d7402bc65a45787a79c1e31f8b64f4452e 100644 GIT binary patch delta 20 acmeBW?`7vc&CAQh00jG%HgDu^Vg>*+^#w`* delta 20 acmeBW?`7vc&CAQh00hn_(>8K9F#`ZF-vrhG diff --git a/osinaweb/osinacore/migrations/__pycache__/0066_remove_customerprofile_business_business_customer.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0066_remove_customerprofile_business_business_customer.cpython-312.pyc index a9d75ceb917c3ea57ceac5217f9dd94417102bd2..fc5829f3bfc1eaebcbd104034906d935672e705d 100644 GIT binary patch delta 20 acmeC>?B(P>&CAQh00jG%HgDu^VgUd&J_Szz delta 20 acmeC>?B(P>&CAQh00hn_(>8K9u>b%uCc7cuiG%qg~0}$+6+Psn5l^Fm%Nd=Jr delta 20 acmcb>c7cuiG%qg~0}wc$Oxwuq$_xNHGX)(0 diff --git a/osinaweb/osinacore/migrations/__pycache__/0068_remove_customerprofile_confirmed_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0068_remove_customerprofile_confirmed_and_more.cpython-312.pyc index 3cbb7483fc5149ca325b6d25c1764ae434886026..45e54a7e06a16d3d2459888d6de715692283682a 100644 GIT binary patch delta 20 acmbQsF_(k;G%qg~0}$+6+Psllhy?&Ongsm- delta 20 acmbQsF_(k;G%qg~0}wc$OxwsU!~y^^ganBI diff --git a/osinaweb/osinacore/migrations/__pycache__/0069_alter_business_logo_alter_projectfile_file_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0069_alter_business_logo_alter_projectfile_file_and_more.cpython-312.pyc index feab8d5729a9cf982ab06fec6a24aff93095402d..5bd91239ab902e58885bf882adbd27abc9ecc15a 100644 GIT binary patch delta 20 acmbQmIg69~G%qg~0}$+6+Psmwp9KImMg?{N delta 20 acmbQmIg69~G%qg~0}wc$Oxwua&jJ85Fa-ht diff --git a/osinaweb/osinacore/migrations/__pycache__/0070_department_alter_staffprofile_staff_position_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0070_department_alter_staffprofile_staff_position_and_more.cpython-312.pyc index a527a34717a9a86e3a743c71ddedd5476dbbef1c..5a5df4db06b2729d140e8179fae04a44649ac243 100644 GIT binary patch delta 20 acmcc3dz+X0G%qg~0}$+6+Psnb0viB900u(< delta 20 acmcc3dz+X0G%qg~0}wc$OxwtPfeipX>IKgL diff --git a/osinaweb/osinacore/migrations/__pycache__/0071_projecttype_department_ticket.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0071_projecttype_department_ticket.cpython-312.pyc index 25a402a6d18ac1a8cda96a33a3455519b0aa5f57..e235b66ec885ec92152944bd86b715e0b111dd77 100644 GIT binary patch delta 20 acmdlcv`vWnG%qg~0}$+6+Pslln-c&!?*(B1 delta 20 acmdlcv`vWnG%qg~0}wc$Oxwt<%?SWE*#zwX diff --git a/osinaweb/osinacore/migrations/__pycache__/0072_ticketupdate_ticketreaction_ticketattachment.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0072_ticketupdate_ticketreaction_ticketattachment.cpython-312.pyc index b6129ac4ba9d07b8586cb71385c1384957fdc01e..a43f0a86c661834fbda067890158420d203996dc 100644 GIT binary patch delta 20 acmdlWx delta 20 acmbQwKA)ZYG%qg~0}wc$Oxwskg&6=duLTSM diff --git a/osinaweb/osinacore/migrations/__pycache__/0074_rename_dare_added_ticketupdate_date_added.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0074_rename_dare_added_ticketupdate_date_added.cpython-312.pyc index fa8d1c94df5c28d8e82d6c1d3837ae126cae0b1f..0e1cbe2d29010348bd65ca021b5e4815b4068c2a 100644 GIT binary patch delta 20 acmaFD`h=DHG%qg~0}$+6+PsnbCKCWbLto|S&CAQh00jG%HgDu+W(EK<`2@=V delta 20 acmeBU>to|S&CAQh00hn_(>8K5GXnrG;{;a# diff --git a/osinaweb/osinacore/migrations/__pycache__/0077_remove_project_status_project_active_projectstatus.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0077_remove_project_status_project_active_projectstatus.cpython-312.pyc index ad342ff3250f897144e2881122405d7f169c8c99..052961eee2b4b386e85820f874802ab4ffd7eb86 100644 GIT binary patch delta 20 acmX@fdy<#?G%qg~0}$+6+Psl_9~%HZFa`|( delta 20 acmX@fdy<#?G%qg~0}wc$Oxwu4j|~7j8U>jE diff --git a/osinaweb/osinacore/migrations/__pycache__/0078_alter_projectstatus_status.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0078_alter_projectstatus_status.cpython-312.pyc index 42b87655d9253b51eab48ff7bcc6a405f73de70e..ce932c012116abe23ee56f0b5f7dd8c868b52b25 100644 GIT binary patch delta 20 acmZ3=zLcH&G%qg~0}$+6+Psl_7Bc`hwFQy@ delta 20 acmZ3=zLcH&G%qg~0}wc$Oxwskix~hkp9LNO diff --git a/osinaweb/osinacore/migrations/__pycache__/0079_alter_project_end_date_alter_project_start_date.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0079_alter_project_end_date_alter_project_start_date.cpython-312.pyc index 35423692c39184aab1015e5f3198610014680083..fdbd14e466ef704591faa662e2b27839835be47c 100644 GIT binary patch delta 20 acmbQrK9!yOG%qg~0}$+6+Psmwix~hlH3eb- delta 20 acmbQrK9!yOG%qg~0}wc$Oxwua#S8#49|Z0I diff --git a/osinaweb/osinacore/migrations/__pycache__/0080_project_logo.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0080_project_logo.cpython-312.pyc index d8120f564838dab2221219ad04ca9794c6564ee8..5dd3d36f92b35f09eb76d3cfb5d413d8902a212d 100644 GIT binary patch delta 20 acmdnSwvCPZG%qg~0}$+6+Pslln;8H(IR!%i delta 20 acmdnSwvCPZG%qg~0}wc$Oxwt<%?toGBLvR? diff --git a/osinaweb/osinacore/migrations/__pycache__/0081_status_task.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0081_status_task.cpython-312.pyc index d3809f170ee0ecab26626348aa3c3b63b32af327..eda8bd5187ef8f7b4998e387c2bc781aa07eaf94 100644 GIT binary patch delta 20 acmZqUXyf2M&CAQh00jG%HgDwq%?toE0R^`J delta 20 acmZqUXyf2M&CAQh00hn_(>8MdW(EK->jgsq diff --git a/osinaweb/osinacore/migrations/__pycache__/0082_pinnedproject.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0082_pinnedproject.cpython-312.pyc index ab83134d6feca2f31cad27a32d836f50894772b6..dd037a32957f34715850885b47dcaa441fd463fd 100644 GIT binary patch delta 20 acmcc3eVd#6G%qg~0}$+6+Psnb0xJMOw+21{ delta 20 acmcc3eVd#6G%qg~0}wc$OxwtPffWEfp#{nS diff --git a/osinaweb/osinacore/migrations/__pycache__/0083_rename_staffposition_jobposition_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0083_rename_staffposition_jobposition_and_more.cpython-312.pyc index f058d261c387717165fe5d247ea4b3f16ad00d2b..5f8cab4f606c67f838b45f55a45c518729969bf3 100644 GIT binary patch delta 20 acmdnXwwI0jG%qg~0}$+6+Psn5h#3GnQ3Y54 delta 20 acmdnXwwI0jG%qg~0}$xxm2BiTVg>*+Oawvz diff --git a/osinaweb/osinacore/migrations/__pycache__/0084_staffposition.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0084_staffposition.cpython-312.pyc index 3c41681e47d4b5d1f50097c0c50c2c00c871015a..35f86298a8f0a1d52c6b1df210c0b345c3362622 100644 GIT binary patch delta 20 acmX@ZeTJL+G%qg~0}$+6+PsnbAS(bqUj`8X delta 20 acmX@ZeTJL+G%qg~0}$xxm2Bib$O-^AS_Jz5 diff --git a/osinaweb/osinacore/migrations/__pycache__/0085_rename_date_staffposition_start_date_and_more.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/0085_rename_date_staffposition_start_date_and_more.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e625f9ec6f11d26bac4e400d1d22acc2045e3bf GIT binary patch literal 937 zcmZuv&ubGw7@gVOY<4#dv`dSJ)M!H~ENHg}1qCSxMM1O&(aT90Z#!TVXmIM1zHh$^802t#DD|YytnUtGvD`SzgMdkf%WavyY`ks z$WJ8mRVu*6K7dog2%{m1s7E8kQz%i$W5SeU!ccYU=X-S&&m37!MVQa#ox>Prl6B*tm84wQdwcip_}L(6 zxBKuGM-$a$sZ za2sJfWK5z|L(M#ZUUS7t`n{-gs|KjQZH9Pp|DvH)_+3t;@1zS}1LzR2v&Ll-6ofyK%BJ zu^VH%@p=90!4La>?yOd9{q2+V`uwm%M-yf~)h=twP-S{~JDX^e-a4Qw<3WBi`{_-f g6n+^xW-6uhk4~s_sjpG}#G0&bk5{*U6CkqsFCDe`egFUf literal 0 HcmV?d00001 diff --git a/osinaweb/osinacore/migrations/__pycache__/__init__.cpython-312.pyc b/osinaweb/osinacore/migrations/__pycache__/__init__.cpython-312.pyc index 84db21be8b417780055a9ca5387c2c3af8847f42..fdea5c10b72ae2b83406829485d32bc2eedd60b4 100644 GIT binary patch delta 19 ZcmX@cc#M(zG%qg~0}$+6+B}haHvl!f1;zjX delta 19 ZcmX@cc#M(zG%qg~0}wc$Oq +
{% if customer_projects %}
diff --git a/osinaweb/osinacore/templates/details_templates/staff-details.html b/osinaweb/osinacore/templates/details_templates/staff-details.html index ca8918b8..231d5fb6 100644 --- a/osinaweb/osinacore/templates/details_templates/staff-details.html +++ b/osinaweb/osinacore/templates/details_templates/staff-details.html @@ -67,106 +67,88 @@
-
- - {% for position in positions %} -
-
-

Position: Junior Software Engineer

-

Start Date: 20-1-2020

-

End Date: 20-1-2020

-
- +
+
+ {% for position in positions %}
- - - -
-
- {% endfor %} - -
- - - + {% endblock content %} \ No newline at end of file diff --git a/osinaweb/osinaweb/__pycache__/__init__.cpython-312.pyc b/osinaweb/osinaweb/__pycache__/__init__.cpython-312.pyc index e8231a7055264f01f43a59106e77a331c7d7d28d..defecff3f2b5357503fcffab205758a8fbf90234 100644 GIT binary patch delta 19 ZcmdnRxQmhdG%qg~0}$+6+B}haJpeQS1)=}| delta 19 ZcmdnRxQmhdG%qg~0}wc$Oq5jn7#>OcW!bKiO>Ag4g`o!%LoFqcQz!-FbzK*K6o2%fi#(Rz-PL+DBW7m3 z*_>i>=uaqt9D3=Y_&@Xy^pfC$9f2vP?V&fDz2(%AEw~bt%$;xSOVA`r4sqvbweIVC+rf|=A)hh9=pKYXUz<~;=>o!Hx6FI0W8 zu|z5FL-;M1N^Xg$9kCw>jY6Wh(C~w$p6YBwVMw7*1nejh9BOw}=u{DFr*qBkmNr+n z{GFBE-L=it9e-o1xwpRZ^8ScmM}o>CrEaE_&6-YV+9eMTK`qqNs_*N;eLpq1Oz#!r zJAr1+$%Ya7^P==#&>@TgmCj97QPOTv&alQ9lMwVoqz2A7y{Kdn)8h!DM-kP`SCzda z;X;X8ZUH-r1ZSzOdkvvQdQ_z|MK5Dc)7f!ezb9xyl%|r&bn*`0zoMbehd%DPdlH0n zH3uqt!zK@U*`rB!lPE$58NkS5QNd-<&+Qv?L|hT1i{?-5B!iE&uZj=&wP@%n+3%N! z`na+T!?-r9Mrl|_hW!tE`X_pRftD}O;st74Rghu*Xdl~WX!bpteK+U4d$RloYF^go zPwS6g&0Kzh&!-w6>Wd$0jW=sQx6kI6-_I|fK5CxUR)&`OpmJR(Nec#1-lM2cdRWD0wf6c9_NC`HLkV$>B>Ud;ru zg@GZRF-kT?B}xt`sI3YUjFL}Li&98Yk5Ww0h*C)mP>^3#viS*f8l{2$Zc-NzO>j%S+8E*2_t(Of4$b^UU*2&CM^WbcTrgfJ7&=a#%8oZ?@-{$|zLD z=j!X}<64}WlbNgNU}mnVKKT*n6$Qs&ch7jofB+v)XU7mvf4^IN&K{0_ey%?8K8}&D zLBX4kab+-aIRmX^1mfb2lP!4S+4+T-8u&gbO`gY-Cc(zQ%6Ef9@Pe@A2WBRIwhzoK bAjuD6lUaF>^Qm265WXQG(#Tun2-FP#_uO#h delta 325 zcmX>rb4!}{G%qg~0}vc2t4!ma$ScXnuu)x~(IJ&RMZAiefgwd=4pSy$lxT`%ic}^e zkdy|KGGJ0RlQEqoN-RY#N<2kAN+N|lN)m{rQWT=3Co$>@Dz0V%naseD&KM<=q7)?y z6r6mXky9y3E=46uK1DT3Aw?}pF-1K}35bxYH<6vT##$xZ&nlg7w5xq|mNpV9>e;Tr-Xjl4znKxF{Y CkX1wg diff --git a/osinaweb/osinaweb/__pycache__/urls.cpython-312.pyc b/osinaweb/osinaweb/__pycache__/urls.cpython-312.pyc index 12b8c4c46e7e032b53162c5556019ab48e3f3483..aca15b3b23f86ec1c39d99e00335d8f95e012c7b 100644 GIT binary patch delta 130 zcmX@g{f}GyG%qg~0}$+6+MMRe!octt#DM`$DC4u%MD=OxY)lNPtSMX*3q%>YC+;(5 zWS#iQRG4Qq6GTxJF9SmqPbIG=-)1Yu`%D}>#ia!W`9&q0g;_Kh87EA(VGWpE%PPmg Q%fZjo!2LmF@?usc0NVW=lmGw# delta 111 zcmeyzeUw}MG%qg~0}wc$OiNQ@VPJR+;=lk0l<}EwqWUyOu8Fsd8CfRtF`5c 0) { + submitButton.classList.remove('hidden'); + submitButton.style.display = 'flex'; + } else { + submitButton.classList.add('hidden'); + submitButton.style.display = 'none'; + } + } + + function removePositionContainer(event) { + event.preventDefault(); + const container = event.target.closest('.initialPositionContainer'); + container.remove(); + updateSubmitButtonVisibility(); + } + + document.getElementById('addNewPosition').addEventListener('click', function () { + const container = document.getElementById('positionsContainer'); + const initialPositionContainer = document.querySelector('.initialPositionContainer'); + + const newPositionContainer = initialPositionContainer.cloneNode(true); + newPositionContainer.classList.remove('hidden'); + newPositionContainer.style.display = 'flex'; + + const selectElement = newPositionContainer.querySelector('select'); + selectElement.name = 'position[]'; + + const dateInputElements = newPositionContainer.querySelectorAll('input[type="date"]'); + dateInputElements.forEach(input => input.name = input.name.replace('date[]', '') + '[]'); + + const removeButton = newPositionContainer.querySelector('.removePositionOption'); + removeButton.addEventListener('click', removePositionContainer); + + container.appendChild(newPositionContainer); + updateSubmitButtonVisibility(); + }); + + document.querySelectorAll('.removePositionOption').forEach(button => { + button.addEventListener('click', removePositionContainer); + }); + + updateSubmitButtonVisibility(); +}); \ No newline at end of file diff --git a/osinaweb/static/js/pop-modals.js b/osinaweb/static/js/pop-modals.js index 140c4875..caeae880 100644 --- a/osinaweb/static/js/pop-modals.js +++ b/osinaweb/static/js/pop-modals.js @@ -107,6 +107,16 @@ function initializeModalButtons() { // KNOWLEDGE BASE addButtonClickListener("projectKnowledgeButton", "400px", "230px"); + addButtonClickListener("deleteButton", "400px", "140px"); + + addButtonClickListener("xssmallPopupButton", "400px", "170px"); + addButtonClickListener("xsmallPopupButton", "400px", "220px"); + addButtonClickListener("smallPopupButton", "400px", "320px"); + addButtonClickListener("mediumPopupButton", "400px", "420px"); + addButtonClickListener("largePopupButton", "400px", "520px"); + + + const closeButton = document.getElementById("closeModalButton"); closeButton.addEventListener("click", () => { closeModal(); diff --git a/osinaweb/static/js/tickets/fixed-ticket-header.js b/osinaweb/static/js/tickets/fixed-ticket-header.js new file mode 100644 index 00000000..b71ae439 --- /dev/null +++ b/osinaweb/static/js/tickets/fixed-ticket-header.js @@ -0,0 +1,26 @@ +document.addEventListener("DOMContentLoaded", function() { + const ticketHeader = document.getElementById("ticketHeader"); + const fixedTicketHeader = document.getElementById("fixedTicketHeader"); + + function checkScroll() { + const ticketHeaderRect = ticketHeader.getBoundingClientRect(); + const parentWidth = ticketHeader.parentElement.offsetWidth; + + if (ticketHeaderRect.bottom <= 0) { + fixedTicketHeader.style.width = `${parentWidth}px`; // Set the width of the fixed header to match the parent container + fixedTicketHeader.style.left = `${ticketHeader.parentElement.getBoundingClientRect().left}px`; // Align to the left edge of the parent + fixedTicketHeader.style.position = 'fixed'; // Make it fixed at the top + fixedTicketHeader.classList.remove("hidden"); + fixedTicketHeader.classList.add("top-0", "z-10"); + } else { + fixedTicketHeader.style.width = ''; // Reset the width to default + fixedTicketHeader.style.left = ''; // Reset the left position + fixedTicketHeader.style.position = ''; // Reset the position to default + fixedTicketHeader.classList.remove("top-0", "z-10"); + fixedTicketHeader.classList.add("hidden"); + } + } + + window.addEventListener("scroll", checkScroll); + window.addEventListener("resize", checkScroll); // Re-check on resize as well +}); \ No newline at end of file diff --git a/osinaweb/static/js/tickets/scroll-bottom-in-ticket.js b/osinaweb/static/js/tickets/scroll-bottom-in-ticket.js new file mode 100644 index 00000000..07d58160 --- /dev/null +++ b/osinaweb/static/js/tickets/scroll-bottom-in-ticket.js @@ -0,0 +1,5 @@ +function scrollToBottom() { + window.scrollTo(0, document.body.scrollHeight); +} + +scrollToBottom(); \ No newline at end of file diff --git a/osinaweb/static/js/tickets/tickets-room.js b/osinaweb/static/js/tickets/tickets-room.js new file mode 100644 index 00000000..281b2c04 --- /dev/null +++ b/osinaweb/static/js/tickets/tickets-room.js @@ -0,0 +1,178 @@ +function app(socket) { + return { + wysiwyg: null, + socket: socket, + typingTimeout: null, + init: function (el) { + this.wysiwyg = el; + this.setupWysiwyg(); + }, + setupWysiwyg: function () { + this.updateTextarea(); + this.wysiwyg.contentDocument.body.addEventListener('input', this.onInput.bind(this)); + this.wysiwyg.contentDocument.querySelector('head').innerHTML += ``; + this.wysiwyg.contentDocument.body.innerHTML = ''; + this.wysiwyg.contentDocument.designMode = "on"; + }, + onInput: function () { + this.updateTextarea(); + this.sendTypingEvent(); + }, + updateTextarea: function () { + var wrapperDiv = document.createElement('div'); + wrapperDiv.className = this.wysiwyg.classList.contains('rtl') ? 'rtl' : 'ltr'; + wrapperDiv.innerHTML = this.wysiwyg.contentDocument.body.innerHTML; + document.getElementById('textEditor').value = wrapperDiv.outerHTML; + }, + sendTypingEvent: function () { + if (this.socket && this.socket.readyState === WebSocket.OPEN) { + clearTimeout(this.typingTimeout); + const data = { event_type: 'typing' }; + this.socket.send(JSON.stringify(data)); + + this.typingTimeout = setTimeout(() => { + const stopTypingData = { event_type: 'stop_typing' }; + this.socket.send(JSON.stringify(stopTypingData)); + }, 1500); + } + }, + format: function (cmd, param) { + this.wysiwyg.contentDocument.execCommand(cmd, false, param || null); + this.updateTextarea(); + }, + setDirection: function (direction) { + this.wysiwyg.classList.remove('rtl', 'ltr'); + this.wysiwyg.contentDocument.body.classList.remove('rtl', 'ltr'); + document.getElementById('textEditor').classList.remove('rtl', 'ltr'); + + this.wysiwyg.classList.add(direction); + this.wysiwyg.contentDocument.body.classList.add(direction); + document.getElementById('textEditor').classList.add(direction); + + this.wysiwyg.contentDocument.body.style.direction = direction; + this.updateTextarea(); + } + } +} + +function initializeWebSocket() { + const ticketId = document.getElementById('ticketId').textContent.trim(); + const wsUrl = `ws://${window.location.host}/ws/ticketroom/${ticketId}/`; + const socket = new WebSocket(wsUrl); + + socket.onopen = () => { + console.log('WebSocket connection established'); + const appInstance = app(socket); + const wysiwygElement = document.querySelector('iframe'); + appInstance.init(wysiwygElement); + }; + + let typingTimeout; + + socket.onmessage = (event) => { + const data = JSON.parse(event.data); + const typingDiv = document.getElementById('typing-notification'); + const messagesDiv = document.getElementById('messages'); + + if (data.event_type === 'typing') { + clearTimeout(typingTimeout); + + + if (!typingDiv.classList.contains('fade-in-up')) { + typingDiv.innerHTML = data.html; + typingDiv.classList.remove('fade-out'); + typingDiv.classList.add('fade-in-up'); + } + + } else if (data.event_type === 'stop_typing') { + if (!typingDiv.classList.contains('fade-out')) { + typingDiv.classList.remove('fade-in-up'); + typingDiv.classList.add('fade-out'); + + typingTimeout = setTimeout(() => { + typingDiv.innerHTML = ''; + typingDiv.classList.remove('fade-out'); + }, 600); + } + + } else if (data.event_type === 'reaction') { + const updateElement = document.getElementById(`update-${data.update_id}`); + updateElement.querySelectorAll('.reaction-button').forEach(button => { + button.classList.remove('border-2', 'border-secondosiblue'); + if (button.dataset.reaction === data.reaction) { + button.classList.add('border-2', 'border-secondosiblue'); + } + }); + const submittedReactions = updateElement.querySelector('#submitted-reactions'); + submittedReactions.classList.remove('w-full', 'border-t', 'border-gray-200', 'pt-5', 'flex', 'justify-start', 'items-center', 'gap-3', 'p-5'); + updateElement.querySelectorAll('.submittedreaction-button').forEach(button => { + button.classList.add('hidden'); + if (button.dataset.reaction === data.reaction) { + submittedReactions.classList.add('w-full', 'border-t', 'border-gray-200', 'pt-5', 'flex', 'justify-start', 'items-center', 'gap-3', 'p-5'); + button.classList.remove('hidden'); + } + }); + } else { + messagesDiv.insertAdjacentHTML('beforeend', data.html); + typingDiv.innerHTML = ''; + typingDiv.classList.remove('fade-in-up', 'fade-out'); + } + }; + + + socket.onclose = () => { + console.log('WebSocket connection closed'); + }; + + socket.onerror = (error) => { + console.log('WebSocket error:', error); + }; + + const form = document.getElementById('ticketForm'); + const textEditor = document.getElementById('textEditor'); + const wysiwygElement = document.querySelector('iframe'); + + form.addEventListener('submit', (event) => { + event.preventDefault(); + + const formData = new FormData(form); + const description = formData.get('description'); + const filePath = formData.getAll('filePath'); + + const data = { + event_type: 'update', + description: description, + filePath: filePath + }; + + socket.send(JSON.stringify(data)); + form.reset(); + textEditor.value = ''; + wysiwygElement.contentDocument.body.innerHTML = ''; // Clear the WYSIWYG content + }); + + document.addEventListener('click', (event) => { + if (event.target.classList.contains('reaction-button')) { + const updateId = event.target.dataset.updateId; + const reaction = event.target.dataset.reaction; + + const data = { + event_type: 'update_reaction', + update_id: updateId, + reaction: reaction + }; + + socket.send(JSON.stringify(data)); + } + }); +} + +document.addEventListener('DOMContentLoaded', () => { + initializeWebSocket(); +}); \ No newline at end of file diff --git a/osinaweb/support/__pycache__/__init__.cpython-312.pyc b/osinaweb/support/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..091d6a8788e982b640fa841edd505b59c1b9f489 GIT binary patch literal 185 zcmX@j%ge<81P7Nkr-A6lAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd6`>zmoLW?@pI@9= zlANEb?~}`4E(S3^GBYwV7BK@^0P}t_fB*mh literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/admin.cpython-312.pyc b/osinaweb/support/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0eda61a15b7e55d367ac723bd76932249796e282 GIT binary patch literal 976 zcmbV~Jxc>I7{{Nq_N=EBp>=XlLBR@oUqA#w98?_CE^hIX>eYKANs*4?;M&dA#X-am z;i`+mi4t^jaw~M}WYY7j)yaE?T)^29YJND(F2DI z%A~RD*hf^zk$Bz_Sk$>R<7k^=l2j@o!HOJfWidEs1aVt=#vIEar4eYuWb88C=>^5}4#|v>omQRnn@mJXOkLkX} z>tPr$VRi3fF>G}5ORC$tOPATW+C^UuzfeOfix7H)saF_p8Gwv4^Td3H;v*EBYY|Mm sK<-CoGlJ><%z6Zq{h2?Shtf<0vwfn6(p&`PU#UN;=Ef6Dv7$QUCsQH85C8xG literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/apps.cpython-312.pyc b/osinaweb/support/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..674913157e16a2fb9bd83c7bffca9e87caaa9813 GIT binary patch literal 493 zcmXv~u};G<5VeyON=pzz1&M)y1t|l`%7Bmx6^Nw^uw=2^+Npw)*u;sdup#;Zh^1e^ zfcOe#7RD+P6B8R!Vd;b&2M>4e`Mo>c-J5NOzrcH!g3m4ia4-b>2iL;k{}!nwX7qo$-E=M6j0zp0(^r&-z0`_ z6{cgA_C?M)OEX=5yF;#VGGZgE|c4QWKmWue`Dr%^T$N^ndODq9Fi za~>(YiqK7tqgvS@G{AY3AuL;3zp6 y+x5z-I92D><*N!+#x;o+%|pH7QMxXvx~x!F{Wc+lA7J-q$$*;==f6Ovs_G9iQ-huW literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/consumers.cpython-312.pyc b/osinaweb/support/__pycache__/consumers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56227e33ec785669222c6e4f22a6526556860e1d GIT binary patch literal 6424 zcmcf_TWlN0ad|wFNAf6j01Z$EaFO^+5^B`?Dd4~=kbbpaMe1w;FMj{4g)h1Y`6o8);<76Hzk|vuk%{cclAL4C;lMhV z<#NtBC)AxXpXL9+F{~@=nsY&~JL}GQ<~$7N$qG5|oR`&G&p==X-w&CABhM09_>jn6 z#c|7N@;B#ScEx>PVT*8CQ1DNgYnc#fvFuL+SS1RXbI4?llN}$DIj774 zqvdLv!ZV}chN=aEZM7t-S%)#QxR7xpoV3WM6WEWHv zKCSC_7)ro?d)>4Js#JNHWtUa%(6SGMznO(+?d~#gQB=d`fiM(=|wXG(rUsmQP z)TLsvK(&dKby(CyaoO-dD-UPoO0T(#MiWg~eIZ~%{WX9ONVO}xdg0oIwM%-}aGAgA ztw#E9^se`AJg-Mid=}OtkN){FJ@PE{wC(haY`Q<2`qP;|p1ITW6kz<-{=pk>ufJXC zpVs@Q%lsXow<=6t4SXV3dPeo0(Mr!Lz30@nFj*CY74fhx9^T+9v6Fi2>`o*R;yO34P$iw54E+MA-j^pmedMY;xaYQ0CQMHu8(k*z)QY63R{0#c7hCBNLFS(N_Ji6R(Q~y*PaDN z|3FV;^8*xZHg)}9;v2OD{J0rE56d1|NIQO_HN9-jmr9)MLyx@Tf|{Sz+_G45ms}5& zP2f8JlkmyOZHy-maM#Xif>!g@tvqxFt-7hePSF0FO34FwH2-4=SO43yImp#Pp2!^~Z)T|8YuDt? zpT-j7U9*NyxdeV((w2+h`vF2eVzilm2_lA^g#d!#Ce9f=4q^?%uWE%N62Wjf4BbX& z1I8va+LwxQQd1IrsFsmW3u663$qSj-HwRnqJ|fVr6N!pZ5AKaUcoiucG%MK z4uj9Az_lw|NXn|=gv5?wlF;B{eWr_5A*Eyf)eud8`8wOU;W6_-)o`a^lbRK|8G`~c zsHGv~I`f6gM$n{tQqz*Dix^rV{w6Oe6hmKJH2t+#Q{K}gpi6>^?5cz;(j&NM7t^IF zF_fLb&llun!&lp_YKR)kDa=jNQ#dGOqNHSPX%)pCYba(|@K7bCq%SEgBem5R14{KT z5c@tLJ62>qza2@G+p671D%~S`_sC6gyZhm?Z`a?w7QXEt+zpRb!_gbQb>GIc9zOn! z%h}yler8V~fk&>sxOTMCJEr%JReERi-kELjbT!yj2@dJOp^axCkObNwCbxyxp12(t z-3|6^g~#`t93yxC2=cAIvD<;M>Y-yB8U4`7@^jVj@W%Ukc(QzcH+;O>KU|F-J;0&Y z#g-6%;1UAq8rm4wJ5Q9)RU;!eeR^cFd|{_=q|!H`_f1s#ruDvQOkyJIk!mznJ=C}Q z{lezM_JuNE6~vFd zA9=5zyK!OtLbZ1YM#IQa-#&5n`^(;MiPI}Sz`#nt2s{8dY!ibFiK}PRGGu(4&RU#B zXKc8!^VXO=19O5y=3H$&e6b<^{}1U-u2c?2&4fJla_ zq_YT6lk_DMi#dm>$GY|~zd-Gox;qA~mbyC_oD~?R{tUneWLNC?2o9qXdq36nYbmS6_w}b9(r0`G0fD_I4QkK)`-E=_0-O^jU@%rHn9A?3Zas=;-kei;xUZq`~V8aaADET#t> z1I(2pEsl5deF0Mt^$47o#`sn346pU-okz<;wY~G><&T!j{J*|0r0qmcRHCQ#=;=!I ztR6l4*M%)9wG}={uwMov9u^T8#`sq6ovHXJM3; z5yF#HL#%}{LtmYIVoj`s$8U$nKcD)>!=q>8P0z+#o^3YnGXzP(2R}(Ne3Fza$V+e| zk_=Ijez}y)nmsfMf~A89Fv75Of}#&)o|mG2J|!%Yn+o$`7Xq|Wbr`^h4BME&8s@%m Qj&q1xk>lSItgxB?4b+Y`E&u=k literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/decorators.cpython-312.pyc b/osinaweb/support/__pycache__/decorators.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd54b6bdfc9252335b5b158c8982e4bc771e91a6 GIT binary patch literal 1451 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 literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/routing.cpython-312.pyc b/osinaweb/support/__pycache__/routing.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c96b8b55e28958237d20b79bb644a83590e3ce2e GIT binary patch literal 424 zcmYLEJx{|h6tweE2v7#3N+2QjG@{;7=~5~XLk9#x>QaT+gp|aNY)4gD`4Nmv45;Eq zFtfDkfE2;R)UBvnC!8h~Z}7XbeRuDDl*=1H)%(li?X&7X8CjKCfcd!sPXGf9LlD6Z zgaB(;54AT90u2y|4Wjp~mF&L{3pmtr;KPnNFzwPbqc%*9*p+uvm=joiIOq!`1Mi+l z&RB%%0hLEN?*_Pm+IA`3#66e#td{Ula9t@=%VSg|5#b`;xm=1bl(<=3rfaU~y220A zN}t>amYH{zSS3rssdxqRY?#G0x)RC)F%d{lWuGulc~U7*+m&uO$R4PBn5QF3`b%EW zC06!GByr5RM4TlupnfeLEY|B0!%0XQd|TyYyNaqhW;%rM8|;69-QN;0t&wGqoa0ZY XHFjDP=X7G6&2(c=8-ohpQs4goPQZBs literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/urls.cpython-312.pyc b/osinaweb/support/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf851e0a0a606b6ceae8cc52cdfd7ca1548d272b GIT binary patch literal 1689 zcma)6&1)M+6rYt=U#m!tA#u_~HG@kdZLzhu^k9@UkU9==<2n!=Xmr`EwWAMrcV{~@ ziff-*dg`gYHOC%Xl0TrwLXW*jAP`+}q4d<7Lk@wQ`et@F5{5$du=_rK^WN|MW_JFl zR15^qdw+e~{ar`sAL*n|F)?1QXbAm?T+~Lc=4L$2&$Kgsww=|apY?P<*Ul+h_ws(B zT~Kz;EBd8&NkbV#GH#ya4lbmHXJ5DQy!b2|`wCYA+|n$cTCQ;hR|eeWG&}pc=g#0N zfV(owr&mgUk8Z@LFg(4!%v2c#pK9qL;ous&+8TY`pz z4!0!Og7(}pw!U(FsKr~xong?C?Bcen=z0_1a$W2Mc;JVWi5A9PMt$rb*-jWH!8!bg z30{p11I$ebOJUf4qh4Q4=IT?Qtm44&$;WkR*G*&7b2wkyhr!&rs{hA=iaueINK*-w z(zy$@6#KViBk@g#+p>(V zPY0|bCqlqj{I~{zFNomQ4K7$KcI;s2?-O>@ii|kGDD`2LE_dsAA𼢼lA}x8* zaox29*&H8a2!xTpiqGWK9uEb;3Rg<#i(H0 z5VP&5Jf}00cL{@w3`GS#4CUcvIq6+WKynY2a?My1mY3PIgv_#nio}d%H$O@yx8F>D z6L~; literal 0 HcmV?d00001 diff --git a/osinaweb/support/__pycache__/views.cpython-312.pyc b/osinaweb/support/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84818900650508f7987223405be47f6c4754786c GIT binary patch literal 2779 zcmb_eO>7fK6rNqL*N$UnlPykSexgv65L0YNYScqZ%Yg_2g-HB_Qdh{@c!$L9uGgI% z6B5}{r1k(3QhTEZj=i9yQjQ$qM5-R@l|dV=617r$;T9TB^wKx`lNdn?5*^7i@4b2N z&HHBFd+T2li5PGi1 zHiUQd-t(&W*P~yK1ZVztMC0h{EJBSil>^UjjXJ!`$z;_XXBFYY=%utn>9yU8sv{=Ut%@p$7t; zI#T2HND#+Gluk@KQn6-IL&u~_jB6zgFUWy_l|v;vOLc9bW1EEJPta2FYpAA5O`paD z1fnN!_>#(MLs3<%7N+N+`U2HjRaGcUH_U!4X6CwDU8U~&fDA~g%hLW%xbVLs$>19l$XjCY^K}}ZZgZ_9im79Xw zGjoPnqD4c`jT^<9jw{s6O)6B;=GjI?$*5(eGGpW_c+Ta0)}`n0bk3|*s|KOD>m@vA zW~=i~r*~Zic3tE!9LRc#ISAci5&aeEx;giK{Z_qsAp1CyTkAi1EAdDFp__^I#K7I_ zD_0*UPAr~WPad?BX)BqwlcQF0^uE|kj<%A=?c{`&oLJq{N=`0LuFC_qJZ#Csww$r# z%*y4aoN39&Y+{D4^BNg`|xa28fi)AZRv_7U3ntq*W@Qe*c|HdAA*)CoH^VWlQosWVNXcT+@r53jwKTH8Ca zHZc0ELzKkDQ_s6mT>jy3bKmg?eXY*ZP2uzwTofv9H+f)K>vlf?gFxItCDh>BKLRRO z=h}*opIjK;HG6{(jGMvtI5&yz@#GLVCPOfp?9(wgNQPl?B>xQqBXSg^t`=((i)d5i zT?kPh!ifi8v^viz&C_TLRc7RtS?_<+lJ(PUIyRS0D%n$Zna(Of9x2%JbhfaxU! z`&=(xU)ixMxOOB9+M~?k^=Lj{1vFDlVd{TCb7WUEI%eJO%}Dy%ka#ve3Wng5-BFxc zg|s@~6wbRSCeyOh?bUA9oP~ld)~M+wf#1F0X0T>DF%=gLqELgF+xj5DS@u_kz<)R7 z^!jds-kQ}61zH+m&Bf{QH)|AnsP{k}Oy23sp%YyrtRpzRevbK=STidTthz13%{TX% z2t#=fxftBsd=Whcq1H6~8TlBtShbi0rp*w?alfOF)=_dDr8dy;2KsOVjclMns6M{` s8K30Na9bfDH(hdb%$17VWFTea<{n>qc}IGAM|#1NKI2910_Vo`FOS}jxc~qF literal 0 HcmV?d00001 diff --git a/osinaweb/support/migrations/__pycache__/0001_initial.cpython-312.pyc b/osinaweb/support/migrations/__pycache__/0001_initial.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c9bf19c14f7c51c2a2ffe8c6ba7c36f3620c215 GIT binary patch literal 7003 zcmeHMOHdoh8J-ylA&G~DgN=F1z}glDiRI~6h*>1?Q+RC&Y+Pn)P`AXuXa>)W@QUnV zQ`y5FeG5lds#2AdIk2ZCr`V_URt`J8rfR6kAzPJ`Z=~$4RQZy0_ee+tu|N_#IYd;c zANt?__y5y9{IROa%iz!R-~2Mk9A}unkVXDemYcl3jVHfi00UTwNwd=|OXi%!r5)3b zv~$`?*AA&{+Ql*B3~+wVfHLTqug(i9j87f*e7ZdA2)JI6MS!*38q{@BPH6$o@}|X< zD(IpjYnCgm04QnEL_q*UtfZgU7pjO=keOxyGtB{Z+QBiOPee(JQhlN|6+>Jvp|xhbagu2wwdwka$3 zr1Y*|G9a{kqmMW}6i&)VB}Xz%#Zymf#NR!aUvMAxU1oS)2b9Qy22+^h$R54Vo?>- zf|}(QVAk?zP!$D9T!vQV5>#gu4e~^rRi#rgyqrnTVv@)BwuEgfo0SB40pB8pPk0H+ zDSgf=(?wl^0aiVR%hRd=P)n%dA~7$(spRHiIpvHbS+1Oe4lKqwu?S_AT(|<?EmfI^2|a{IkV)w3Ng|>`!InTkV`#Y(8BJHxP+hLy&OtE0 zx2P&f5j*P0>Biy5w`ZtBi_;b2_ae?k8p^u1TwCBSY-2_e4a%*4Ky-U@x@WUiIhIb0 zTCU8&Bq-`I9dH)0kPDm5M~I0h%QXc(xh<X)WKpi9@%%e0z4O_0= zsoLJPytdMqpe^A9tEM9Z7E%0(HM zwIHeFU58bxJ;HGiW-%cK5tIRx6IqqK;IWR3#A8?Z_?^gY{^mqDa>J_JrVycKRg7Yz zb$FA!-BHO~CadxzF*SmFz!=G<&Q((&c+n-Z8MjTj@%g?2}iJEMUkK&=VW5Q=UzVj zj(Lp@W8S7haU4%AgcG7ClyoSpBr>#!LQz2%q%8SC7P@T%LNa_r*SRH~KZ3KNT-rm0 zms_Epo}Lf+TtI^uPUTn|{c_`pb{sE1XTGmK`q}uFi}9TK!fU!uBlqdwy3I3}(V5FH z-6Nas{!RDwt#W6r>$4kM)r_Z=5Vat8%Vtge_ch0iy3WT-W?d($>s)uf=rE>vLsmEH zG{dKF*7%LK-Y2KbwqDfMyI%XEeWNXE_$D@MP8bcHE2qqcPSnu3me^>xVE8U>*0dP@ zo+mET--G-;Yx=W}4ga{|yMomijb~Q|&Bn8+@$7f~%UcX{g}cV#;bSh&yNG zG59TLg!`*K5Oc?<{BbP5!D#AU88e%@QB(I?cwK+7^lkQ=tU1A>3ErHTLlbl6#6vXk z5F7Uh%fQUd|044>%6y$_zJWELG}_NU88q9^qxSR9oG5WF&@F`mrF5;I5`&GNc zuhaYag~8NKz|@VJyT2RUjp3F8hWE!EL}6&mtJtjtc9gh92I5wjx)s50;mYeHmDh*b z`qqke-9BD#up& zc38D9hz`*({>O23kOXv*1azVLuC@3^{YArf>5$pqtT|W~6Xtyl-PbniX>#_0O#6P2 zDQ?m0?a#s+EmsZSwSU4!|2lY){8s!%G@~;pI%7stD4H^(3W_SY-DK>Z)>PH~*jv zxbdl$KKO$PMNZmB4^M6f%+gbeeY~jO-VECRQVQk|3F<^%nmR>hRQNqSd+WYrpMr+f u2Y5;T7o(A5;+BJD*&kdCd-BiBnLjc9H?A1Vx*mH?UkCDa{J@YEmGTecBJBMD literal 0 HcmV?d00001 diff --git a/osinaweb/support/migrations/__pycache__/0002_remove_ticket_departments_and_more.cpython-312.pyc b/osinaweb/support/migrations/__pycache__/0002_remove_ticket_departments_and_more.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0890c039d048a517e730b9054e7fac75642cb802 GIT binary patch literal 2266 zcmd5-Pi)&%7=LygCvnowDH+)kXn++^+AhgfEn!N9R9aF&w{BuVo1!Ai$$N>M#dffr zl=Q@(9XRf`UN~|bkaptPPMWY*940a0!}Irj@B90E z-}m0nQ&Suu-;dvZRbOTS_}yVfpMOXkmI(0xKme&0kf{nK(-oR>c)I1QFf>>P(030& z22oAd+sJ|U-}8C@ioZvv{eL)2n#Ptf_-KHb)1pBiWcK}gv}gSe z9G#5ZVD@K5d5|2K=4n{J^dDdydw~_7ovir(fpvqaoaw!sj^ohv(Xf%p3#q!Kh&5G1 z_;N1y&J{sJiYOxiiUtyNL#)@^M8la(htmviLsXz36C2_npm*ABRWooTm&;ueB!wu8 zEzBBH?JhEK7@{^YlaXTR?w~uvEjS@CSEIHV(u1eJCWj&zY$RdwWr;M_7q2#JN?t!5{FTyW+e z<+)fW0?7^;2-AkTGd-*<<7JqpHD~%TTbED^>X`QuT|2H1bK_cfV&gDl>1LY8LBUN; z5HKeY3}L5*2ptiGPdj4Eg`RN41St?HH3{jOb7SK0M@Uw?sN}@P;Z+xf>kgKhbK&5~ zds1VC;N$I2tr3jMk~~!BO5~`dhO$ARVqsHM8Y-q?6$jm7$dLLvm9_UVr?%1X zBK{5>I+w`PFS8#Lc=fE)1~paAuBo+-dz{%#(GXibXG0M$dVaGC+IION>(bk(njK=9 z9bfcW(l3`uyE$bE!zLI*r3<4T%d~qMd5nO&1PGyjLjiCP3|J7lM)iXi27X_R{ruV> z0z#>;IXgIO1!w#5R6ja<!--0v%f{pn(_JjT{}K+#pj;mgb7o>;_bofIU?mnF)*nlcBs*WS@+CWe!^+>V z^S7=1ZF8%0km#EHc0YRFOfK%`?c}1BTzuGl+~mHs_ay(r)$gy`#SN>tVHe9*v1}K&tm2j_ zZXcvRGx^^0XZmJxhW+A0?c(UX(ku>nt&o9Lx0AhoJ%23Bc+Y)i)Qj5NBU^3JpBztHlK^svJy+ROVn_+V^9((TYtTVHQ>l9O1 z+T|~>koZqnTct{v*2-?-k|ve2v$vc$#oOU$1xgSC2c7|Sj)1xhO}##0`8{zvoH#Qt^8d6XLOLw6iAYt(OF3S~0`vvu z`^I|=3=%{kaVVOg#C3pqQ#<6pDPY=D_lI}lbY2sQXMTir@Urg_IeJCbRmFwU_lCpa zeIi)FKQN-Q@jIpnWmPIv!Ad1bT2fMQ!8GnJHI^z>wKO%tf>V~0GA)?)T04qX^nh3g zAvz=`k=8jg_!=Sa>ojkJT4oxslCpA~F)7-G=+#$tf~OhFsSbI?7Tfp^^H#={ieF16 zWXxrz#=MB1@NsPij7O*g73-o!{C%zkd6|cZ0BT{SEx-xwz5i zk0MtG-86gjz)J3lZ?q9MY}25t!G5>0N8+ZT=GlR~V@%^Bgf20lyBByB;jiJ@`p)V4 K&LtRPv;P9DYPFjH literal 0 HcmV?d00001 diff --git a/osinaweb/support/migrations/__pycache__/__init__.cpython-312.pyc b/osinaweb/support/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba31e0f589ef993f0fe5c748369ee1588aae9e6b GIT binary patch literal 196 zcmX@j%ge<81P7Nkr-A6lAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdm8>6HoLW?@pI@9= zlANEb?~ + + + + + + Osina + + + + + + + +
+ {% csrf_token %} +

Add New Department

+ + + +
+ +
+ +
+ +
+
+ + + \ No newline at end of file diff --git a/osinaweb/support/templates/add_templates/add-ticket-member-modal.html b/osinaweb/support/templates/add_templates/add-ticket-member-modal.html new file mode 100644 index 00000000..ffb5328b --- /dev/null +++ b/osinaweb/support/templates/add_templates/add-ticket-member-modal.html @@ -0,0 +1,33 @@ +{% load static %} + + + + + + + + Osina + + + + + + + +
+ {% csrf_token %} +

Add New Member

+ + + + +
+ +
+
+ + + \ No newline at end of file diff --git a/osinaweb/support/templates/details_templates/partials/typing-message.html b/osinaweb/support/templates/details_templates/partials/typing-message.html index 489bbfa3..a54a52b4 100644 --- a/osinaweb/support/templates/details_templates/partials/typing-message.html +++ b/osinaweb/support/templates/details_templates/partials/typing-message.html @@ -1,6 +1,6 @@ -
+
-
+
{% if user.customerprofile %} {% if user.customerprofile.image %} -
-
-

{{user.first_name}} is typing...

-
+
+

+ {{user.first_name}} is typing...

\ No newline at end of file diff --git a/osinaweb/support/templates/details_templates/ticket-room.html b/osinaweb/support/templates/details_templates/ticket-room.html index 62aea604..4be0d9a1 100644 --- a/osinaweb/support/templates/details_templates/ticket-room.html +++ b/osinaweb/support/templates/details_templates/ticket-room.html @@ -1,7 +1,8 @@ -{% extends base_template %} +{% extends base_template %} {%load static%} {% block content %} + `; - this.wysiwyg.contentDocument.body.innerHTML = ''; - this.wysiwyg.contentDocument.designMode = "on"; - }, - onInput: function() { - this.updateTextarea(); - this.sendTypingEvent(); - }, - updateTextarea: function() { - var wrapperDiv = document.createElement('div'); - wrapperDiv.className = this.wysiwyg.classList.contains('rtl') ? 'rtl' : 'ltr'; - wrapperDiv.innerHTML = this.wysiwyg.contentDocument.body.innerHTML; - document.getElementById('textEditor').value = wrapperDiv.outerHTML; - }, - sendTypingEvent: function() { - if (this.socket && this.socket.readyState === WebSocket.OPEN) { - clearTimeout(this.typingTimeout); - const data = { event_type: 'typing' }; - this.socket.send(JSON.stringify(data)); - - this.typingTimeout = setTimeout(() => { - const stopTypingData = { event_type: 'stop_typing' }; - this.socket.send(JSON.stringify(stopTypingData)); - }, 1500); - } - }, - format: function (cmd, param) { - this.wysiwyg.contentDocument.execCommand(cmd, false, param || null); - this.updateTextarea(); - }, - setDirection: function(direction) { - this.wysiwyg.classList.remove('rtl', 'ltr'); - this.wysiwyg.contentDocument.body.classList.remove('rtl', 'ltr'); - document.getElementById('textEditor').classList.remove('rtl', 'ltr'); - - this.wysiwyg.classList.add(direction); - this.wysiwyg.contentDocument.body.classList.add(direction); - document.getElementById('textEditor').classList.add(direction); - - this.wysiwyg.contentDocument.body.style.direction = direction; - this.updateTextarea(); - } - } - } - - function initializeWebSocket() { - const ticketId = '{{ticket.id}}'; - const wsUrl = `wss://${window.location.host}/ws/ticketroom/${ticketId}/`; - const socket = new WebSocket(wsUrl); - - socket.onopen = () => { - console.log('WebSocket connection established'); - const appInstance = app(socket); - const wysiwygElement = document.querySelector('iframe'); // Replace with your specific iframe selector - appInstance.init(wysiwygElement); - }; - - socket.onmessage = (event) => { - const data = JSON.parse(event.data); - if (data.event_type === 'typing') { - const typingDiv = document.getElementById('typing-notification'); - typingDiv.innerHTML = data.html; - } else if (data.event_type === 'stop_typing') { - const typingDiv = document.getElementById('typing-notification'); - typingDiv.innerHTML = ''; - } else if (data.event_type === 'reaction') { - const updateElement = document.getElementById(`update-${data.update_id}`); - updateElement.querySelectorAll('.reaction-button').forEach(button => { - button.classList.remove('border-2', 'border-secondosiblue'); - if (button.dataset.reaction === data.reaction) { - button.classList.add('border-2', 'border-secondosiblue'); - } - }); - const submittedReactions = updateElement.querySelector('#submitted-reactions'); - submittedReactions.classList.remove('w-full', 'border-t', 'border-gray-200', 'pt-5', 'flex', 'justify-start', 'items-center', 'gap-3', 'p-5'); - updateElement.querySelectorAll('.submittedreaction-button').forEach(button => { - button.classList.add('hidden'); - if (button.dataset.reaction === data.reaction) { - submittedReactions.classList.add('w-full', 'border-t', 'border-gray-200', 'pt-5', 'flex', 'justify-start', 'items-center', 'gap-3', 'p-5'); - button.classList.remove('hidden'); - } - }); - } else { - const typingDiv = document.getElementById('typing-notification'); - const messagesDiv = document.getElementById('messages'); - messagesDiv.insertAdjacentHTML('beforeend', data.html); - typingDiv.innerHTML = ''; - } - }; - - socket.onclose = () => { - console.log('WebSocket connection closed'); - }; - - socket.onerror = (error) => { - console.log('WebSocket error:', error); - }; - - const form = document.getElementById('ticketForm'); - const textEditor = document.getElementById('textEditor'); - const wysiwygElement = document.querySelector('iframe'); // Replace with your specific iframe selector - - form.addEventListener('submit', (event) => { - event.preventDefault(); - - const formData = new FormData(form); - const description = formData.get('description'); - const filePath = formData.getAll('filePath'); - - const data = { - event_type: 'update', - description: description, - filePath: filePath - }; - - socket.send(JSON.stringify(data)); - form.reset(); - textEditor.value = ''; - wysiwygElement.contentDocument.body.innerHTML = ''; // Clear the WYSIWYG content - }); - - document.addEventListener('click', (event) => { - if (event.target.classList.contains('reaction-button')) { - const updateId = event.target.dataset.updateId; - const reaction = event.target.dataset.reaction; - - const data = { - event_type: 'update_reaction', - update_id: updateId, - reaction: reaction - }; - - socket.send(JSON.stringify(data)); - } - }); - } - - document.addEventListener('DOMContentLoaded', () => { - initializeWebSocket(); - }); - - - - - - - - - -
-
-
-

Task

+ + +
+
+
+ + + + + +
+ + + + +
+ +
-
- {% if points %} - {% for point in points %} - -
+
+
+

Task

+
+
+
+ {% if points %} + {% for point in points %} + +
-
-
- {% if point.status == 'Completed' %} -

{{point.text}}

- {% else %} -

{{point.text}}

- {% endif %} -
- -
- {% if point.status == 'Not Completed' or point.status == 'Paused' and not point.status == 'Completed' %} - - - - {% endif %} - - {% if point.status == 'Working On' and not point.status == 'Completed' %} - - - - {% endif %} - - {% if not point.status == 'Completed' and not point.status == 'Paused' %} - - - - {% endif %} - - - {% if point.status == 'Completed' %} +
+
+ {% if point.status == 'Completed' %} +

{{point.text}}

+ {% else %} +

{{point.text}}

+ {% endif %} +
+ +
+ {% if point.status == 'Not Completed' or point.status == 'Paused' and not point.status == 'Completed' %} + + + + {% endif %} + + {% if point.status == 'Working On' and not point.status == 'Completed' %} + + + + {% endif %} + + {% if not point.status == 'Completed' and not point.status == 'Paused' %} + - {% endif %} - - {% if not point.status == 'Completed' %} -
- {% csrf_token %} - -
- {% endif %} -
-
- -
- {% endfor %} - {% else %} -
-

No Available Points

+ +
+
+

Total Time: + + {{ point.total_activity_time.0 }} hours, + {{ point.total_activity_time.1 }} minutes, + {{ point.total_activity_time.2 }} seconds + +

+
+ +
+ {% if point.status == 'Completed' %} +

Completed

+ {% elif point.status == 'Working On' %} +

Working On

+ {% elif point.status == 'Paused' %} +

Paused

+ {% else %} +

Created

+ {% endif %} +
- {% endif %}
+ {% endfor %} + {% else %} +
+

No Available Points

+
+ {% endif %}
+
@@ -540,8 +447,16 @@ + + + + + + + + {% endblock %} \ No newline at end of file diff --git a/osinaweb/support/templates/details_templates/ticket-settings.html b/osinaweb/support/templates/details_templates/ticket-settings.html new file mode 100644 index 00000000..c5e8983c --- /dev/null +++ b/osinaweb/support/templates/details_templates/ticket-settings.html @@ -0,0 +1,106 @@ +{% extends "main.html" %} +{%load static%} +{% block content %} + + +
+

+ Settings +

+ + + +
+
+
+

Departments

+
+ + +
+ + +
+
+

Departnet Name

+ +

10-2-2024

+
+ +
+

Departnet Name

+ +

10-2-2024

+
+ +
+

Departnet Name

+ +

10-2-2024

+
+
+
+ + + + +
+ + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/support/urls.py b/osinaweb/support/urls.py index 2f363d94..c54e2b47 100644 --- a/osinaweb/support/urls.py +++ b/osinaweb/support/urls.py @@ -21,7 +21,10 @@ from django.conf import settings urlpatterns = [ path('tickets//', views.ticket_room, name='ticketroom'), + path('ticket-settings', views.ticket_settings, name='ticketsettings'), + path('add-ticket-department', views.add_ticket_department_modal, name='addticketdepartmentmodal'), + path('add-ticket-member', views.add_ticket_member_modal, name='addticketmembermodal'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/osinaweb/support/views.py b/osinaweb/support/views.py index ea4d2786..571837b9 100644 --- a/osinaweb/support/views.py +++ b/osinaweb/support/views.py @@ -33,3 +33,35 @@ def ticket_room(request, ticket_number): + +@ticket_member_required +def ticket_settings(request): + + context = { + + } + + return render(request, 'details_templates/ticket-settings.html', context) + + + +@ticket_member_required +def add_ticket_department_modal(request): + + context = { + + } + + return render(request, 'add_templates/add-ticket-department-modal.html', context) + + + +@ticket_member_required +def add_ticket_member_modal(request): + + context = { + + } + + return render(request, 'add_templates/add-ticket-member-modal.html', context) + diff --git a/osinaweb/tailwind.config.js b/osinaweb/tailwind.config.js index 02325896..e6619999 100644 --- a/osinaweb/tailwind.config.js +++ b/osinaweb/tailwind.config.js @@ -6,6 +6,7 @@ module.exports = { "./osinacore/templates/**/*.html", "./customercore/templates/**/*.html", "./billing/templates/**/*.html", + "./support/templates/**/*.html", ], theme: { screens: {