From dc388bdc8c1a3e716bc4cc5b5609506cacdee1db Mon Sep 17 00:00:00 2001 From: emile Date: Sat, 18 May 2024 22:41:44 +0300 Subject: [PATCH] ne --- .../__pycache__/__init__.cpython-310.pyc | Bin 194 -> 194 bytes .../__pycache__/admin.cpython-310.pyc | Bin 400 -> 400 bytes .../__pycache__/apps.cpython-310.pyc | Bin 483 -> 483 bytes .../__pycache__/models.cpython-310.pyc | Bin 1941 -> 1941 bytes .../__pycache__/0001_initial.cpython-310.pyc | Bin 700 -> 700 bytes .../0002_country_addressbook.cpython-310.pyc | Bin 1161 -> 1161 bytes .../__pycache__/0003_contact.cpython-310.pyc | Bin 1005 -> 1005 bytes .../0004_socialmedia.cpython-310.pyc | Bin 925 -> 925 bytes ...05_socialmedia_addressbook.cpython-310.pyc | Bin 764 -> 764 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 205 -> 205 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 190 -> 190 bytes .../billing/__pycache__/admin.cpython-310.pyc | Bin 499 -> 499 bytes .../billing/__pycache__/apps.cpython-310.pyc | Bin 471 -> 471 bytes .../__pycache__/models.cpython-310.pyc | Bin 6247 -> 6247 bytes .../billing/__pycache__/urls.cpython-310.pyc | Bin 831 -> 831 bytes .../billing/__pycache__/views.cpython-310.pyc | Bin 2233 -> 2233 bytes .../add/__pycache__/urls.cpython-310.pyc | Bin 909 -> 909 bytes .../add/__pycache__/views.cpython-310.pyc | Bin 6772 -> 6772 bytes .../delete/__pycache__/urls.cpython-310.pyc | Bin 489 -> 489 bytes .../delete/__pycache__/views.cpython-310.pyc | Bin 1009 -> 1009 bytes .../edit/__pycache__/urls.cpython-310.pyc | Bin 503 -> 503 bytes .../edit/__pycache__/views.cpython-310.pyc | Bin 1178 -> 1178 bytes .../__pycache__/0001_initial.cpython-310.pyc | Bin 1328 -> 1328 bytes ...vice_cancelled_at_and_more.cpython-310.pyc | Bin 824 -> 824 bytes ...003_payment_servicepayment.cpython-310.pyc | Bin 1169 -> 1169 bytes ...rename_payment_paymenttype.cpython-310.pyc | Bin 592 -> 592 bytes ...05_service_recurring_cycle.cpython-310.pyc | Bin 779 -> 779 bytes ...ervice_created_at_and_more.cpython-310.pyc | Bin 788 -> 788 bytes ...er_service_recurring_cycle.cpython-310.pyc | Bin 830 -> 830 bytes .../0008_alter_service_type.cpython-310.pyc | Bin 829 -> 829 bytes ...cepayment_service_and_more.cpython-310.pyc | Bin 1172 -> 1172 bytes .../0010_charge_amount.cpython-310.pyc | Bin 712 -> 712 bytes .../__pycache__/0011_invoice.cpython-310.pyc | Bin 905 -> 905 bytes ...nt_charge_receipt_and_more.cpython-310.pyc | Bin 1040 -> 1040 bytes ...alter_invoice_date_created.cpython-310.pyc | Bin 661 -> 661 bytes ...014_servicepayment_comment.cpython-310.pyc | Bin 660 -> 660 bytes .../__pycache__/0015_order.cpython-310.pyc | Bin 1111 -> 1111 bytes .../0016_alter_order_status.cpython-310.pyc | Bin 725 -> 725 bytes .../0017_service_order.cpython-310.pyc | Bin 751 -> 751 bytes .../0018_alter_order_status.cpython-310.pyc | Bin 733 -> 733 bytes ..._service_customer_and_more.cpython-310.pyc | Bin 2358 -> 2358 bytes .../0020_orderitem.cpython-310.pyc | Bin 904 -> 904 bytes ...m_recurring_cycle_and_more.cpython-310.pyc | Bin 837 -> 837 bytes ...e_item_created_at_and_more.cpython-310.pyc | Bin 843 -> 843 bytes ...em_project_alter_item_type.cpython-310.pyc | Bin 941 -> 941 bytes .../0024_remove_item_active.cpython-310.pyc | Bin 586 -> 586 bytes ...item_project_item_customer.cpython-310.pyc | Bin 888 -> 888 bytes ...tem_type_remove_order_paid.cpython-310.pyc | Bin 697 -> 697 bytes .../0027_item_type.cpython-310.pyc | Bin 709 -> 709 bytes ...0028_remove_order_due_date.cpython-310.pyc | Bin 567 -> 567 bytes .../0029_invoice_pdf.cpython-310.pyc | Bin 648 -> 648 bytes .../0030_alter_invoice_order.cpython-310.pyc | Bin 746 -> 746 bytes ...ter_invoice_invoice_number.cpython-310.pyc | Bin 671 -> 671 bytes .../0032_order_business.cpython-310.pyc | Bin 820 -> 820 bytes .../0033_alter_order_status.cpython-310.pyc | Bin 750 -> 750 bytes .../0034_alter_invoice_pdf.cpython-310.pyc | Bin 669 -> 669 bytes .../0035_alter_invoice_pdf.cpython-310.pyc | Bin 652 -> 652 bytes ...ter_invoice_invoice_number.cpython-310.pyc | Bin 678 -> 678 bytes .../0037_recurringcycle_item.cpython-310.pyc | Bin 762 -> 762 bytes .../0038_alter_invoice_pdf.cpython-310.pyc | Bin 669 -> 669 bytes ...recurringcycle_cycle_price.cpython-310.pyc | Bin 651 -> 651 bytes ..._orderitem_end_at_and_more.cpython-310.pyc | Bin 758 -> 758 bytes .../0041_orderitem_active.cpython-310.pyc | Bin 667 -> 667 bytes .../0042_order_due_date.cpython-310.pyc | Bin 634 -> 634 bytes .../0043_alter_invoice_pdf.cpython-310.pyc | Bin 667 -> 667 bytes ...044_alter_orderitem_active.cpython-310.pyc | Bin 650 -> 650 bytes ...ter_orderpayment_date_paid.cpython-310.pyc | Bin 740 -> 740 bytes ...t_order_orderpayment_order.cpython-310.pyc | Bin 855 -> 855 bytes ...cription_paymenttype_image.cpython-310.pyc | Bin 778 -> 778 bytes ...e_order_status_orderstatus.cpython-310.pyc | Bin 1112 -> 1112 bytes ...rename_due_date_order_date.cpython-310.pyc | Bin 618 -> 618 bytes ...ent_type_orderpayment_type.cpython-310.pyc | Bin 744 -> 744 bytes ..._alter_orderpayment_amount.cpython-310.pyc | Bin 670 -> 670 bytes ...2_alter_orderstatus_status.cpython-310.pyc | Bin 780 -> 780 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 201 -> 201 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 195 -> 195 bytes .../__pycache__/admin.cpython-310.pyc | Bin 458 -> 452 bytes .../__pycache__/apps.cpython-310.pyc | Bin 486 -> 486 bytes .../custom_context.cpython-310.pyc | Bin 1618 -> 1446 bytes .../__pycache__/decorators.cpython-310.pyc | Bin 965 -> 965 bytes .../__pycache__/models.cpython-310.pyc | Bin 3197 -> 3281 bytes .../__pycache__/urls.cpython-310.pyc | Bin 1813 -> 1813 bytes .../__pycache__/views.cpython-310.pyc | Bin 8291 -> 9551 bytes osinaweb/customercore/admin.py | 2 +- osinaweb/customercore/custom_context.py | 9 -- .../migrations/0012_ticket_ticket_members.py | 20 ++++ .../0013_alter_ticket_ticket_members.py | 19 ++++ ...ove_ticket_department_ticket_department.py | 23 ++++ ...15_rename_department_ticket_departments.py | 18 +++ ..._rename_ticketstatusupdate_ticketstatus.py | 19 ++++ .../__pycache__/0001_initial.cpython-310.pyc | Bin 1969 -> 1969 bytes ...02_alter_ticket_department.cpython-310.pyc | Bin 836 -> 836 bytes ...mer_ticket_status_and_more.cpython-310.pyc | Bin 1114 -> 1114 bytes ...ket_ticket_number_and_more.cpython-310.pyc | Bin 929 -> 929 bytes .../0005_ticketstatusupdate.cpython-310.pyc | Bin 1204 -> 1204 bytes .../0006_ticketupdate_read.cpython-310.pyc | Bin 658 -> 658 bytes ...ead_ticketupdatereadstatus.cpython-310.pyc | Bin 1153 -> 1153 bytes ...pdatereadstatus_ticketread.cpython-310.pyc | Bin 755 -> 755 bytes ...er_ticketattachment_ticket.cpython-310.pyc | Bin 816 -> 816 bytes ...ction_ticketupdatereaction.cpython-310.pyc | Bin 641 -> 641 bytes ...ketupdatereaction_customer.cpython-310.pyc | Bin 894 -> 894 bytes ...0012_ticket_ticket_members.cpython-310.pyc | Bin 0 -> 801 bytes ...lter_ticket_ticket_members.cpython-310.pyc | Bin 0 -> 758 bytes ...partment_ticket_department.cpython-310.pyc | Bin 0 -> 800 bytes ...artment_ticket_departments.cpython-310.pyc | Bin 0 -> 659 bytes ...tstatusupdate_ticketstatus.cpython-310.pyc | Bin 0 -> 740 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 206 -> 206 bytes osinaweb/customercore/models.py | 5 +- .../payment/__pycache__/urls.cpython-310.pyc | Bin 990 -> 990 bytes .../payment/__pycache__/views.cpython-310.pyc | Bin 7395 -> 7395 bytes .../templates/email_templates/new_ticket.html | 66 +++++++++++ .../email_templates/new_ticket_update.html | 65 +++++++++++ .../listing_pages/customer-tickets.html | 8 +- osinaweb/customercore/views.py | 105 ++++++++++++------ osinaweb/db.sqlite3 | Bin 1273856 -> 1310720 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 192 -> 192 bytes .../__pycache__/admin.cpython-310.pyc | Bin 1910 -> 1910 bytes .../__pycache__/apps.cpython-310.pyc | Bin 477 -> 477 bytes .../custom_context.cpython-310.pyc | Bin 3028 -> 3028 bytes .../__pycache__/decorators.cpython-310.pyc | Bin 948 -> 948 bytes .../__pycache__/forms.cpython-310.pyc | Bin 1075 -> 1075 bytes .../__pycache__/models.cpython-310.pyc | Bin 13273 -> 13273 bytes .../__pycache__/urls.cpython-310.pyc | Bin 4073 -> 4073 bytes .../__pycache__/views.cpython-310.pyc | Bin 19421 -> 19674 bytes .../add/__pycache__/urls.cpython-310.pyc | Bin 1900 -> 1900 bytes .../add/__pycache__/views.cpython-310.pyc | Bin 13167 -> 13167 bytes .../__pycache__/serializers.cpython-310.pyc | Bin 1019 -> 1019 bytes .../api/__pycache__/urls.cpython-310.pyc | Bin 345 -> 345 bytes .../api/__pycache__/views.cpython-310.pyc | Bin 1177 -> 1177 bytes .../delete/__pycache__/urls.cpython-310.pyc | Bin 1215 -> 1215 bytes .../delete/__pycache__/views.cpython-310.pyc | Bin 3438 -> 3438 bytes .../edit/__pycache__/urls.cpython-310.pyc | Bin 1975 -> 1975 bytes .../edit/__pycache__/views.cpython-310.pyc | Bin 11920 -> 11920 bytes .../__pycache__/0001_initial.cpython-310.pyc | Bin 2058 -> 2058 bytes ...ions_staffprofile_and_more.cpython-310.pyc | Bin 2180 -> 2180 bytes .../0003_milestone.cpython-310.pyc | Bin 1028 -> 1028 bytes .../__pycache__/0004_epic.cpython-310.pyc | Bin 971 -> 971 bytes .../0005_staffprofile_image.cpython-310.pyc | Bin 641 -> 641 bytes .../__pycache__/0006_note.cpython-310.pyc | Bin 1129 -> 1129 bytes ...ct_id_alter_project_status.cpython-310.pyc | Bin 824 -> 824 bytes ...8_alter_project_project_id.cpython-310.pyc | Bin 696 -> 696 bytes ...9_alter_project_project_id.cpython-310.pyc | Bin 681 -> 681 bytes .../0010_remove_note_date.cpython-310.pyc | Bin 576 -> 576 bytes ...r_alter_note_text_and_more.cpython-310.pyc | Bin 1187 -> 1187 bytes .../0012_projectrequirement.cpython-310.pyc | Bin 950 -> 950 bytes .../0013_projectfile.cpython-310.pyc | Bin 976 -> 976 bytes ...014_alter_projectfile_file.cpython-310.pyc | Bin 652 -> 652 bytes .../0015_projectcredentials.cpython-310.pyc | Bin 980 -> 980 bytes ...dentials_projectcredential.cpython-310.pyc | Bin 626 -> 626 bytes ...e_alter_project_start_date.cpython-310.pyc | Bin 747 -> 747 bytes .../0018_epic_status.cpython-310.pyc | Bin 716 -> 716 bytes ...date_alter_epic_start_date.cpython-310.pyc | Bin 706 -> 706 bytes .../__pycache__/0020_task.cpython-310.pyc | Bin 1203 -> 1203 bytes ...rprofile_business_and_more.cpython-310.pyc | Bin 1552 -> 1552 bytes ...ustomerprofile_customer_id.cpython-310.pyc | Bin 706 -> 706 bytes .../0023_task_assigned_to.cpython-310.pyc | Bin 769 -> 769 bytes .../0024_task_task_id.cpython-310.pyc | Bin 653 -> 653 bytes .../__pycache__/0025_status.cpython-310.pyc | Bin 1035 -> 1035 bytes ...e_status_user_status_staff.cpython-310.pyc | Bin 838 -> 838 bytes .../0027_alter_status_staff.cpython-310.pyc | Bin 798 -> 798 bytes ...8_remove_projecttype_color.cpython-310.pyc | Bin 586 -> 586 bytes .../0029_alter_reference_date.cpython-310.pyc | Bin 655 -> 655 bytes .../__pycache__/0030_tag.cpython-310.pyc | Bin 721 -> 721 bytes ...1_alter_staffprofile_image.cpython-310.pyc | Bin 657 -> 657 bytes .../__pycache__/0032_point.cpython-310.pyc | Bin 1015 -> 1015 bytes ...nt_date_workingon_and_more.cpython-310.pyc | Bin 829 -> 829 bytes ...nt_date_completed_and_more.cpython-310.pyc | Bin 876 -> 876 bytes .../0035_business_business_id.cpython-310.pyc | Bin 688 -> 688 bytes ...lter_staffprofile_position.cpython-310.pyc | Bin 878 -> 878 bytes ...move_staffprofile_position.cpython-310.pyc | Bin 617 -> 617 bytes ...taffprofile_staff_position.cpython-310.pyc | Bin 793 -> 793 bytes ...taffprofile_staff_position.cpython-310.pyc | Bin 809 -> 809 bytes ...0040_staffprofile_staff_id.cpython-310.pyc | Bin 688 -> 688 bytes .../0041_dailyreport.cpython-310.pyc | Bin 1012 -> 1012 bytes ...omerprofile_email_and_more.cpython-310.pyc | Bin 783 -> 783 bytes .../0043_businesstype.cpython-310.pyc | Bin 756 -> 756 bytes ...ove_business_business_type.cpython-310.pyc | Bin 590 -> 590 bytes .../0045_business_type.cpython-310.pyc | Bin 774 -> 774 bytes .../0046_task_requirement.cpython-310.pyc | Bin 770 -> 770 bytes .../0047_task_status_date.cpython-310.pyc | Bin 713 -> 713 bytes ...r_customerprofile_business.cpython-310.pyc | Bin 822 -> 822 bytes ...r_customerprofile_business.cpython-310.pyc | Bin 801 -> 801 bytes ...by_projectrequirement_date.cpython-310.pyc | Bin 965 -> 965 bytes ...051_alter_task_requirement.cpython-310.pyc | Bin 808 -> 808 bytes .../0052_note_project.cpython-310.pyc | Bin 760 -> 760 bytes .../0053_pointactivity.cpython-310.pyc | Bin 903 -> 903 bytes ...nt_date_completed_and_more.cpython-310.pyc | Bin 704 -> 704 bytes .../0055_alter_point_status.cpython-310.pyc | Bin 763 -> 763 bytes ...ter_pointactivity_end_time.cpython-310.pyc | Bin 668 -> 668 bytes ...otal_time_minutes_and_more.cpython-310.pyc | Bin 805 -> 805 bytes ..._total_time_hours_and_more.cpython-310.pyc | Bin 723 -> 723 bytes ...059_alter_task_requirement.cpython-310.pyc | Bin 804 -> 804 bytes ...0_pointactivity_total_time.cpython-310.pyc | Bin 668 -> 668 bytes ...date_alter_task_start_date.cpython-310.pyc | Bin 709 -> 709 bytes .../0062_connection.cpython-310.pyc | Bin 1078 -> 1078 bytes ...0063_alter_connection_date.cpython-310.pyc | Bin 637 -> 637 bytes .../__pycache__/0064_reaction.cpython-310.pyc | Bin 1022 -> 1022 bytes ...ter_customerprofile_status.cpython-310.pyc | Bin 750 -> 750 bytes ...business_business_customer.cpython-310.pyc | Bin 878 -> 878 bytes ..._customerprofile_confirmed.cpython-310.pyc | Bin 707 -> 707 bytes ...profile_confirmed_and_more.cpython-310.pyc | Bin 852 -> 852 bytes ..._projectfile_file_and_more.cpython-310.pyc | Bin 868 -> 868 bytes ...le_staff_position_and_more.cpython-310.pyc | Bin 1184 -> 1184 bytes ...jecttype_department_ticket.cpython-310.pyc | Bin 1403 -> 1403 bytes ...treaction_ticketattachment.cpython-310.pyc | Bin 1429 -> 1429 bytes ...073_alter_ticket_regarding.cpython-310.pyc | Bin 759 -> 759 bytes ...ed_ticketupdate_date_added.cpython-310.pyc | Bin 643 -> 643 bytes ...attachment_ticket_and_more.cpython-310.pyc | Bin 905 -> 905 bytes .../0076_alter_reference_date.cpython-310.pyc | Bin 647 -> 647 bytes ...oject_active_projectstatus.cpython-310.pyc | Bin 1208 -> 1208 bytes ...alter_projectstatus_status.cpython-310.pyc | Bin 782 -> 782 bytes ...e_alter_project_start_date.cpython-310.pyc | Bin 703 -> 703 bytes .../0080_project_logo.cpython-310.pyc | Bin 681 -> 681 bytes .../0081_status_task.cpython-310.pyc | Bin 778 -> 778 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 203 -> 203 bytes .../osinacore/templates/customer_index.html | 4 +- .../templates/listing_pages/tickets.html | 30 ++--- osinaweb/osinacore/views.py | 61 +++++----- .../__pycache__/__init__.cpython-310.pyc | Bin 191 -> 191 bytes .../__pycache__/settings.cpython-310.pyc | Bin 3013 -> 3013 bytes .../osinaweb/__pycache__/urls.cpython-310.pyc | Bin 1240 -> 1240 bytes .../osinaweb/__pycache__/wsgi.cpython-310.pyc | Bin 596 -> 596 bytes 222 files changed, 364 insertions(+), 90 deletions(-) create mode 100644 osinaweb/customercore/migrations/0012_ticket_ticket_members.py create mode 100644 osinaweb/customercore/migrations/0013_alter_ticket_ticket_members.py create mode 100644 osinaweb/customercore/migrations/0014_remove_ticket_department_ticket_department.py create mode 100644 osinaweb/customercore/migrations/0015_rename_department_ticket_departments.py create mode 100644 osinaweb/customercore/migrations/0016_rename_ticketstatusupdate_ticketstatus.py create mode 100644 osinaweb/customercore/migrations/__pycache__/0012_ticket_ticket_members.cpython-310.pyc create mode 100644 osinaweb/customercore/migrations/__pycache__/0013_alter_ticket_ticket_members.cpython-310.pyc create mode 100644 osinaweb/customercore/migrations/__pycache__/0014_remove_ticket_department_ticket_department.cpython-310.pyc create mode 100644 osinaweb/customercore/migrations/__pycache__/0015_rename_department_ticket_departments.cpython-310.pyc create mode 100644 osinaweb/customercore/migrations/__pycache__/0016_rename_ticketstatusupdate_ticketstatus.cpython-310.pyc create mode 100644 osinaweb/customercore/templates/email_templates/new_ticket.html create mode 100644 osinaweb/customercore/templates/email_templates/new_ticket_update.html diff --git a/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc b/osinaweb/addressbook/__pycache__/__init__.cpython-310.pyc index 66d22a20c14fe88258993dd6e4bb7b45c83bcc3c..ac8f1b387dd15ec2312be34806aa81a27ba2a788 100644 GIT binary patch delta 19 ZcmX@ac!-fZpO=@50SH)MdQ9Zr4gf4N1g-!8 delta 19 ZcmX@ac!-fZpO=@50SKgnohEW`2LLIs1SkLi diff --git a/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc b/osinaweb/addressbook/__pycache__/admin.cpython-310.pyc index 297614bd14cef9741c4cc8a877923ae831102b63..58161bde92bc8cfac0ebea942476faf21fb2baf4 100644 GIT binary patch delta 20 acmbQhJb{@zpO=@50SH)MdTiuwWdr~z*#tcR delta 20 acmbQhJb{@zpO=@50SKgnoi=i}G6Dc5(F3;t diff --git a/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc b/osinaweb/addressbook/__pycache__/apps.cpython-310.pyc index 5031dc4ea5d0b086888bbaf86fcbf9e175191e10..cc4040430725acce533ec848545cf73ee86c3a65 100644 GIT binary patch delta 20 acmaFN{Fs?LpO=@50SH)MdTivr!3Y30(FHaD delta 20 acmaFN{Fs?LpO=@50SKgnoi=jcU<3d&$po+f diff --git a/osinaweb/addressbook/__pycache__/models.cpython-310.pyc b/osinaweb/addressbook/__pycache__/models.cpython-310.pyc index 6fae882d0291a3fc9cd8fd12db53359aff727c57..ab3756766518b0fae84c8a95f6040921cfe2efaf 100644 GIT binary patch delta 20 acmbQrKb4<5pO=@50SH)MdTiwGVg~>$R|IMR delta 20 acmbQrKb4<5pO=@50SKgnoi=iJu>$}pPXput diff --git a/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0001_initial.cpython-310.pyc index d8412ef9d4f6850d9178f203820d0e3a1d2a10ed..5eb1e9ba790e1f57b4998ebe0f8984605b4c5305 100644 GIT binary patch delta 20 acmdnPx`&lJpO=@50SH)MdTiw0$OHf}0tChY delta 20 acmdnPx`&lJpO=@50SKgnoi=iBWC8#!`UF4# diff --git a/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0002_country_addressbook.cpython-310.pyc index b3c2d89519bc115859c540898077285dac7a76ab..5ed338209af03197a7b0097a835442d9f8f7c3b4 100644 GIT binary patch delta 20 ZcmeC=?BwLm=jG*M00P#R9vivqSO6)U1UCQx delta 20 ZcmeC=?BwLm=jG*M00QY?r;XfoEC42y1F--A diff --git a/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0003_contact.cpython-310.pyc index 3cca92c6a1c6aa14198f50ca01b8236bbe74f2af..61a3717d1657ce6529124cbeb4545d9191b5fa39 100644 GIT binary patch delta 20 acmaFM{+69PpO=@50SH)MdTiu=#0&s9^95c2 delta 20 acmaFM{+69PpO=@50SKgnoi=hmVg>*;>jc;U diff --git a/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0004_socialmedia.cpython-310.pyc index 14911f4b9fb600e82d9d78edccb08335ac65b106..0b4ad2b8ef8fed98c675e1743047eeba8d248fa8 100644 GIT binary patch delta 20 acmbQsK9`+4pO=@50SH)MdTivL#0&r|a|CVx delta 20 acmbQsK9`+4pO=@50SKgnoi=h$Vg>*yYXj&2 diff --git a/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/0005_socialmedia_addressbook.cpython-310.pyc index edaadae77f34395781baf320ed30ddc3e7c6dd79..b101e5b884f3be0eee87c437b856486c2eb5451b 100644 GIT binary patch delta 20 acmeyv`iGS}pO=@50SH)MdTiwW$OHg80tJQu delta 20 acmeyv`iGS}pO=@50SKgnoi=iRWC8#;`UL<0 diff --git a/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/addressbook/migrations/__pycache__/__init__.cpython-310.pyc index b42c8372eb6928ed36033d3d90f5b0bfe35d259f..f5321633b12eb78c95ce3237c5d92fc0e25bd4a9 100644 GIT binary patch delta 19 ZcmX@hc$SenpO=@50SH)MdQ9X#1OP3`1kV5f delta 19 ZcmX@hc$SenpO=@50SKgnohEW00st#V1W5n@ diff --git a/osinaweb/billing/__pycache__/__init__.cpython-310.pyc b/osinaweb/billing/__pycache__/__init__.cpython-310.pyc index d8b20a2a5a324948dcb08cdd16f00b6ca5d7485e..0e5d7947c1fbfb44cfa3eea1b769da8f0c832d5a 100644 GIT binary patch delta 19 ZcmdnTxQ~%LpO=@50SH)MdQ9Zr3;-*h1fl={ delta 19 ZcmdnTxQ~%LpO=@50SKgnohEW`1^_7>1RMYW diff --git a/osinaweb/billing/__pycache__/admin.cpython-310.pyc b/osinaweb/billing/__pycache__/admin.cpython-310.pyc index 79ad7f4abd6e51097a72aa380836782c8ced04c6..b2c8896ce8c8c86b7d6d619f13b9607add0662b5 100644 GIT binary patch delta 20 acmey&{F#|MpO=@50SH)MdTiu=!3Y33Q3YlI delta 20 acmey&{F#|MpO=@50SKgnoi=j6U<3d*Nd({k diff --git a/osinaweb/billing/__pycache__/apps.cpython-310.pyc b/osinaweb/billing/__pycache__/apps.cpython-310.pyc index 937e1fa82cd6f295bbf2f7e8e8f8185cfc7603b8..951dd5ef217e3fdd88f251b03a8a508d31042a43 100644 GIT binary patch delta 20 acmcc4e4Uv)pO=@50SH)MdTiuA!w3L0@dXk9 delta 20 acmcc4e4Uv)pO=@50SKgnoi=ixVFUm%=>&`b diff --git a/osinaweb/billing/__pycache__/models.cpython-310.pyc b/osinaweb/billing/__pycache__/models.cpython-310.pyc index d51a6493603323a4d1da3d02474c51e300ab7381..42985af61bf04bd0ad329cc3deed09acb455157f 100644 GIT binary patch delta 20 acmaEE@Z5kqpO=@50SH)MdTiv5kpKWZ+yyfL delta 20 acmaEE@Z5kqpO=@50SKgnoi=jENB{si)C8>n diff --git a/osinaweb/billing/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/__pycache__/urls.cpython-310.pyc index 883d5906e00ff40cc878b79a0d4b529c7a7f6765..4de030d9d445e61e6af03f0415c6e44848b4fe41 100644 GIT binary patch delta 20 acmdnbwx5kVpO=@50SH)MdTiu2VFmy&p9E3> delta 20 acmdnbwx5kVpO=@50SKgnoi=itFarQBmjlcI diff --git a/osinaweb/billing/__pycache__/views.cpython-310.pyc b/osinaweb/billing/__pycache__/views.cpython-310.pyc index 17eb1890f1991450ce5ecace225af60a17399e7d..13b35cb5259eeee1d551dff1ff864f0fa2da7f1d 100644 GIT binary patch delta 20 acmdlfxKofjpO=@50SH)MdTiug#{mE`Km^+W delta 20 acmdlfxKofjpO=@50SKgnoi=i>;{X6JI0RJy diff --git a/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/add/__pycache__/urls.cpython-310.pyc index bdd1735c63241fbd784aa16c8b7f4515d704cd76..9dbf47d6ddeb84cdbc77948b750c1aa2f33e72ca 100644 GIT binary patch delta 20 ZcmeBW?`7xC=jG*M00P#R9viuvm;ovC1U>)& delta 20 ZcmeBW?`7xC=jG*M00QY?r;XfA%m60q1GoSH diff --git a/osinaweb/billing/add/__pycache__/views.cpython-310.pyc b/osinaweb/billing/add/__pycache__/views.cpython-310.pyc index 03a30e242011601366b54690baad1ed81b3de7ec..e521fcf0f2c177974fedd9fe09d2f3398339105f 100644 GIT binary patch delta 117 zcmexj^2LNNpO=@50SH)MdZhhR-N?t!!pOH-j-`f)QG4@jHYsLC-_6@NZ5bKMH-F(; z&dAulc@9q(6XTr8>iiEGPjBWFNMmKZwz)vmmYGp>^E!#;jPlG}j7%~>tO&%KK+F%s OB0#Li#mK?MV-Emnm>VAe delta 117 zcmexj^2LNNpO=@50SKgnozfW8HuCYaFbZszW2s?c)ZILrO^TV(fAcm@TSmsp&0n~d zGctB=p2O3{#5ixVI{!n)vzs{u(pVYqZY~hDWoDGwyiQ^{qdY4YBa;jeD*~}55c31E O2oURWF>>(p*aHC9Y8k%( diff --git a/osinaweb/billing/delete/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/delete/__pycache__/urls.cpython-310.pyc index 6de0e56606a1dfe9e14f5cb4b968d44f8f91993d..7fcad60e917b4c3f3014a537a1c829ba727fd22e 100644 GIT binary patch delta 20 acmaFK{F0eFpO=@50SH)MdTivr#|Qv7!39VF delta 20 acmaFK{F0eFpO=@50SKgnoi=jcV*~&+xdg%h diff --git a/osinaweb/billing/delete/__pycache__/views.cpython-310.pyc b/osinaweb/billing/delete/__pycache__/views.cpython-310.pyc index ba6f3ce74b01de28df99339b58489fa3609556f8..f6ac0f5ff3384474adf4d0fd8e58f676092a95a3 100644 GIT binary patch delta 20 acmey!{*j$KpO=@50SH)MdTiu=#tZ;ClLcx3 delta 20 acmey!{*j$KpO=@50SKgnoi=hmV+H^=iv;8V diff --git a/osinaweb/billing/edit/__pycache__/urls.cpython-310.pyc b/osinaweb/billing/edit/__pycache__/urls.cpython-310.pyc index 27131e9e1c9ad7cc5e79985f65962cdc88e71ec0..1183d9e79985bf83aa4cc6296a1f3362b6b3953a 100644 GIT binary patch delta 20 acmey){GFLQpO=@50SH)MdTiu=!w3L5@da`K delta 20 acmey){GFLQpO=@50SKgnoi=j6VFUm+=>+Tm diff --git a/osinaweb/billing/edit/__pycache__/views.cpython-310.pyc b/osinaweb/billing/edit/__pycache__/views.cpython-310.pyc index 6eee0e0a58ab35f57dc8416a54857930f36bdb7c..d354f76347513d87c03e401ba836299f8f83fd9c 100644 GIT binary patch delta 20 acmbQmIg67!pO=@50SH)MdTiwGX8`~#Lw%+x?k7BC-`&;@dDaoFVMr4BJfle3vWm}!8REMPt=p%3KV;;_lhPbtkwwPOVGirIjK022qJ7&8Ee4H(D( diff --git a/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0004_rename_payment_paymenttype.cpython-310.pyc index 7110a775d1b7e91957f7786b82ded3dba3777f93..611fba7182d85a09a2667b8464565f5a77b9d0ca 100644 GIT binary patch delta 20 acmcb>a)E_ApO=@50SH)MdTiu&WdZ;){se#k delta 20 acmcb>a)E_ApO=@50SKgnoi=j2G64WD_5=C= diff --git a/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0005_service_recurring_cycle.cpython-310.pyc index 884a9d3914a166a568a56daee4b4f5959f713970..f9237d2e86154a3e847d39bf66013b4b5ce4501d 100644 GIT binary patch delta 67 zcmeBX>t^H5=jG*M00P#R9uv9mGTz$wl9Q253Mfz{HTehQT`5rzlLgF2C8Q_6XOaN` D3m6W1 delta 67 zcmeBX>t^H5=jG*M00QY?r-|Hm8KXA7A`1`B`)iOIj1qyXx_6)pe( diff --git a/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0007_alter_service_recurring_cycle.cpython-310.pyc index 2ef757495b214ab2dcf7a1234a115eb4308c4735..d4c4fdea4843bf757f217917c22dabff23de17ad 100644 GIT binary patch delta 20 acmdnTwvUZFpO=@50SH)MdTiu2W(EK-cLYxW delta 20 acmdnTwvUZFpO=@50SKgnoi=hCGXnrEZv)8y diff --git a/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0008_alter_service_type.cpython-310.pyc index 740f95c3e5133c878fd640d4a7547a60d1e529a5..a55e769b9132d615973f614e3907acbe75adec78 100644 GIT binary patch delta 69 zcmdnXwwH}NpO=@50SH)MdTivDWMsUxS(TBAkxd3DR3tN5m+6+2IEcvt=A#m_lNFg| E0MKv?=Kufz delta 69 zcmdnXwwH}NpO=@50SKgnoi=hyGBQSOR%K*jWRnI86-iIlWx6FL24b>+`KW}XS65L0`z4YLxXlq!hL0v13ebS77@$N&IF;}zBb delta 110 zcmbQjIfauupO=@50SKgnoi=j2GBQR@4rKHNlJgnef#h>WCq~Z6T1+}ZLO?Y|!azck lxrhVA=A4|tbdF5}#MIbq!>q(8r37NLfCW$q&B+xkG60k?6S4pR diff --git a/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0010_charge_amount.cpython-310.pyc index 97bf9883a6a77c00732d80be54f5bf3391255c2a..59601d480dfd386f7139e244be4894c53facceec 100644 GIT binary patch delta 20 acmX@XdV-ZZpO=@50SH)MdTiw0%LD*2;sojd delta 20 acmX@XdV-ZZpO=@50SKgnoi=jsWdZ;%+5}_( diff --git a/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0011_invoice.cpython-310.pyc index c950cabc0020afb9f8fe936bc65c7a7c8a6d613a..79b321b7512c40543a559848565f639d464cccc8 100644 GIT binary patch delta 74 zcmeBV?_}rB=jG*M00P#R9vitAF)~I?UdOnKQFwABlQNqEP`pTCaud@ RPO2RvkXOtCBm|hmm;p#zAF==d delta 134 zcmbQhF@b|SpO=@50SKgnoi=jIFv>^q7#J8D#%Jc0pO=@50SH)MdQ9X#!WcF2!YMW(Aiqdx@&d-w0uUyc4pO=@50SKgnohEW0VZ1f*!YMXkAiqd>@&d-w0uUyc4h($ delta 56 zcmbQjI)#-xpO=@50SKgnohEX>X1q1=`!Y6BAiqd-@?ys00uUyc4h($ diff --git a/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0015_order.cpython-310.pyc index cb434dbe5553d7a940546b3d8d2592a5671a3515..20d2d334fbf8f9c7efd8ba5f12e78d265cc444fc 100644 GIT binary patch delta 20 acmcc4ah-!ZpO=@50SH)MdTiwOVF3U%s05z? delta 20 acmcc4ah-!ZpO=@50SKgnoi=j&umAutpadBJ diff --git a/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0016_alter_order_status.cpython-310.pyc index 83d6189a0077a83a63e8329be25d227a1c747fa6..d4b6db9fce280160249d360138c8c86ec163a34b 100644 GIT binary patch delta 20 acmcc0dX<$spO=@50SH)MdTiuA#RLE}>ID%1 delta 20 acmcc0dX<$spO=@50SKgnoi=ixVgdj$;slET diff --git a/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0017_service_order.cpython-310.pyc index 6b7e3773c34e008f26f6810a2927efa945e5b465..1a8c66f80e1295fbec179bbc8ddb42069f816150 100644 GIT binary patch delta 20 acmaFQ`ks|LpO=@50SH)MdTiu=!UO;~`UPJA delta 20 acmaFQ`ks|LpO=@50SKgnoi=hmVFCa(@&wrc diff --git a/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0018_alter_order_status.cpython-310.pyc index 2b4bb20e018f71054c2d1a76fbceac89d2da9a72..92488f3020557f35418c198794c853c2a58b5f59 100644 GIT binary patch delta 20 acmcc1dY6?upO=@50SH)MdTivr!~_5~Dg`M3 delta 20 acmcc1dY6?upO=@50SKgnoi=h`Vgdj&A_SuV diff --git a/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0019_item_orderpayment_remove_service_customer_and_more.cpython-310.pyc index 5bf071c482e24eefd78e814caab80ab538254b4d..f1ab61540954c3a21c39a198d0f60da2849514ff 100644 GIT binary patch delta 244 zcmdlcv`vURpO=@50SH)MdTiv@WoC?;Y{`6BLl`JhBnl*M@gyhaC8y@(q^86tmfT`X zOfJbROVwm55(lf8tiqziC_LGn#ZCaOrAP)OB|CX4%N$09$wsWUULb>@qCl1=bCEVk zKmkbHVol3T%}Ke%ky4r(pORRT8pTqOn3)pA=A4mOl%A@|2vNlzoLW?tnVfoS@=jI- sHn4HBlkc-SGs delta 244 zcmdlcv`vURpO=@50SKgnoi=joGBe(qY{`6BLj)*NBnBjI@gyhaC8y@(q^86tmfT`X zOfJbROVwm5k^rlitiqziC^Ffd#ZCaOrAQVeB{z90%N$0<$wsWUULb>@qCl1=bCC{6 zKoLmXVol3T%}Ke%ky4r(pORRT8pTqOn3-~m%{e2nC_Pn^5u%DcIJKxOGdVSC@=jI- sHn4GWlkc-SGs*)j|5}@ delta 20 acmX@gc9e}fpO=@50SKgnoi=h?F#`ZDhXdXK diff --git a/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0022_remove_item_cancelled_at_remove_item_created_at_and_more.cpython-310.pyc index 88a019261a4af18a4a85b126af83c14bf47f435b..e070c7a205416b2414fec792e2be6427aee2f45a 100644 GIT binary patch delta 104 zcmX@jcAAYlpO=@50SH)MdQ9a0#dvEn8>0b`G-p(lxW$!Rl$uzQni8K_a*H#+C?&Nh tvm`b5*5m?4DK<`^o+7Tv6Bs+#q(Drm&2mi4i~#HX#fBK diff --git a/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0023_alter_item_project_alter_item_type.cpython-310.pyc index 57f3d4ce063254037e14d5b1842dfd5a89909e36..24375a71d2f95741babf06e361b5d9bb07f7b02b 100644 GIT binary patch delta 69 zcmZ3>zLuRkpO=@50SH)MdTiu2Wn_%n?8s=t$R-OEDw3Vt%=AS{0>oqi^HB-8$rG7n E0M(-mq5uE@ delta 69 zcmZ3>zLuRkpO=@50SKgnoi=itGBV!U?8s=t$R-CADw3Pr%=AS{62xQy^HB-;$rG7n E0MU{RqW}N^ diff --git a/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0024_remove_item_active.cpython-310.pyc index 04b328aa6363c13578c3f7fe0afc57b1feff39c2..69157d9c20d9e31faba1b0993e3edce02eedee65 100644 GIT binary patch delta 56 zcmX@ba*BmJpO=@50SH)MdQ9Zr#CU7sz6ERoKz@7$e+h{*!x LqZ0CyW0++CpV1FA delta 79 zcmeyt_JfT(pO=@50SKgnoi=jIGBVzptjXBK#tjrH;+edWaTc3Ah$%lgkm;k86o|W{iUhp? delta 20 acmdnVx|5YVpO=@50SKgnoi=i>V*&szf&@1J diff --git a/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0027_item_type.cpython-310.pyc index 8df0a23a91cdbbb4465982f38afd2031593f36e5..d2892be714b871a1a26e4241a963d3e0dce411a8 100644 GIT binary patch delta 20 acmX@gdX$wrpO=@50SH)MdTiw0#RLE{Y6Rf` delta 20 acmX@gdX$wrpO=@50SKgnoi=jsVgdj!Vgy?N diff --git a/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0028_remove_order_due_date.cpython-310.pyc index ee3b864ccd3c23fbd68d636826519688e99ce64a..9ede2a3ad2b63a74379b6a646057e344fc0ce116 100644 GIT binary patch delta 56 zcmdnavYmxHpO=@50SH)MdQ9Zr#27VkUl$uckYB_<*^hC*0E7wVg9w4ivP@C{Y}gBP delta 56 zcmdnavYmxHpO=@50SKgnohEW`V!SnRUl*GIkY6M)*^hC*0E7wVg9yRNvP@C{X=4j> diff --git a/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0029_invoice_pdf.cpython-310.pyc index 5f62447d9024e9d806949ef6c4d804edbdac0514..04b6ef3dabf72395079548b9efc978e891c75a1c 100644 GIT binary patch delta 56 zcmeBR?O^53=jG*M00P#R9uv9GFy5MY;|QBLkY6M|c@g6t0SFV!2N4pJ^O&Rng~bfl delta 56 zcmeBR?O^53=jG*M00QY?r-|HW7^5cMIKn0d^ diff --git a/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0031_alter_invoice_invoice_number.cpython-310.pyc index e18a1235ea509a519b5f323ada034eaad1405824..eec600232f7a78b171713b278f74ce18f12e4d8a 100644 GIT binary patch delta 78 zcmbQwI-iw0pO=@50SH)MdQ9X##TYg5+8H)cAiqd-@(RYYS`a3f4pC E0LXj`y#N3J delta 69 zcmdnOwuOy5pO=@50SKgnoi=g{GBQSOmStpRWRn3370FE2V7ewH4q~!^`KW~KWC>;& E0FyBaumAu6 diff --git a/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0033_alter_order_status.cpython-310.pyc index 7c68585c1fc0ae1dbb231a34231bb3e5d50253ab..9fad05f49d37008c6273466e69be3d87195cd81b 100644 GIT binary patch delta 151 zcmaFI`i_-5pO=@50SH)MdQ9ZLz!)|0jU&J#xm~jQ042UT+nUU$R7K91rg9uq5af`zy VH$SB`C)JJ-$SY<65&}$O%m6@_A}#;` diff --git a/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0034_alter_invoice_pdf.cpython-310.pyc index 89dfff00a12877217b4a0f4ca205f77ce0d93472..a5cc0bf068752978e2a189e4aefcc627c961960f 100644 GIT binary patch delta 20 acmbQsI+v9@pO=@50SH)MdTivL!~_5=Dg)1~k_3bR delta 20 acmZ3+x{Q@OpO=@50SKgnoi=jMW&!{ziUa-t diff --git a/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0037_recurringcycle_item.cpython-310.pyc index 2ff7e03d308e9166d04313b676a7c7db7a4d3718..585d37bf30fc580e7e7dddf9e2ad628a27756843 100644 GIT binary patch delta 72 zcmeyx`iqr2pO=@50SH)MdQ9ZL%Xn+zOC`ozlX)0#vPl6&i=-yMX1pmS3SzQ=`KW~S I;M1& diff --git a/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0038_alter_invoice_pdf.cpython-310.pyc index fe5e15e910d414859b118f12566966ff9e954ed4..0c280e142b90bfb45af63b36732ae279838f8ccc 100644 GIT binary patch delta 78 zcmbQsI+v9@pO=@50SH)MdQ9X#!x%O3#$`4!Aiqd#@(T#{LqdW#h-5;gJ5 bbT(n2>LTIE6B+jlK$u`Yh!B~az$66#be9-J delta 86 zcmeyx@{5H#pO=@50SKgnohEXhlD{QtU|?bxpI?-cT9jFmnj4>(T#{LqdW#h-a%1?7v)kUI{Co=9AfH1*)5Fs`>fk_Ggg4r0# diff --git a/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0043_alter_invoice_pdf.cpython-310.pyc index 8d78d54c1b23cadbbc7bbc8d19b90b00df9d126d..1174fd868721079762416ac2efd89aa002943533 100644 GIT binary patch delta 56 zcmbQuI-8X{pO=@50SH)MdQ9X#!+2}rjf-sJKz@<<A4Et@Ze)@I0FjXm AFaQ7m delta 56 zcmbQuI-8X{pO=@50SKgnohEXhVT_u1<06|FkY6M=c|GGH0SFV!2NB|v8=0g4X+{hr diff --git a/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0044_alter_orderitem_active.cpython-310.pyc index edaccf1460773e53ffbf073c4229ec5c3cb97efd..fd26df9b57eacda2f7619a9e6058bd3459ab6f29 100644 GIT binary patch delta 80 zcmeBT?PBH5=jG*M00P#R9uv7wNk)ko7?>ExC+3u-7R6`gmE~t9r^Xkgq(x19x0Fp7 YsIEwO@=V6#0uUyc4ExC+3u-7R6`gmE~t9r^Xkgq}`hMZYi56 YP+gJetf^1=jG*M00P#R9viv;GXVf9Rs^yD delta 20 ZcmeBT>tf^1=jG*M00QY?r;XhInE)qF1S|jm diff --git a/osinaweb/billing/migrations/__pycache__/0048_remove_order_status_orderstatus.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0048_remove_order_status_orderstatus.cpython-310.pyc index bd00b89e9850b5cea0713997ca4079538b7796f6..d1e9b93f5c952b861da623835a16fbf760aa9904 100644 GIT binary patch delta 20 acmcb?af5?9pO=@50SH)MdTiwOWdQ&*&;+6Y delta 20 acmcb?af5?9pO=@50SKgnoi=j&vH$=v$OIe! diff --git a/osinaweb/billing/migrations/__pycache__/0049_rename_due_date_order_date.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0049_rename_due_date_order_date.cpython-310.pyc index 462eba59dc2015855ca0cb455451bb66d1d36219..1cdd0e72f176499c114ec61676b95ba5594fef2c 100644 GIT binary patch delta 56 zcmaFG@`{B!pO=@50SH)MdQ9Zr!gy=qfh}x8Kz@gb#=7R{a I$>*4)05la3dH?_b delta 67 zcmaFC`ht}^pO=@50SKgnohEW$W4tx-Q7#)NkYB_#Ih3)1O$@{on|zz`u>gb#=7R|F I$>*4)05Gi&d;kCd diff --git a/osinaweb/billing/migrations/__pycache__/0051_alter_orderpayment_amount.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/0051_alter_orderpayment_amount.cpython-310.pyc index 80c470953c728e5e062fb410142411853bda3c85..69a1648906237e58205f02dbbbe32a7501e1b0f2 100644 GIT binary patch delta 92 zcmbQoI**k*pO=@50SH)MdQ9X#!E;OBz`)cXz9=;}zii@1;fbF%v55d>i$o@`Vmze< gVS@P}LKH~c;;_lhPbtkwwPOVGidle!0FxLq0CQm#sQ>@~ delta 92 zcmbQoI**k*pO=@50SKgnohEXh;EB>VFfcWUFG|hLFPr#Lc;cr`Y{EdtW;0=jG*M00P#R9vitCnE@!L1GxYI delta 20 ZcmeBS>tW;0=jG*M00QY?r;Xf<%m5{y12X^s diff --git a/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/billing/migrations/__pycache__/__init__.cpython-310.pyc index 68df807395b0b7e330d5ef7a3a5efeba9ceb36ae..69044ae3468ffd14cff0efb91992ecda0ec793f3 100644 GIT binary patch delta 19 ZcmX@fc#@GjpO=@50SH)MdQ9Zr2LLTK1j7IT delta 19 ZcmX@fc#@GjpO=@50SKgnohEYc0{|+s1U&!% diff --git a/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc b/osinaweb/customercore/__pycache__/__init__.cpython-310.pyc index 37e0f8e527f0f7844e26e649336cdb1d2df2905d..d6778a67afb80f9085e180d05134e8ec22c3230d 100644 GIT binary patch delta 19 ZcmX@ic$kqppO=@50SH)MdQ9Zr0RSvl1hD`B delta 19 ZcmX@ic$kqppO=@50SKgnohEYc001e~1S
aC?iv6FJPxe@ diff --git a/osinaweb/customercore/__pycache__/apps.cpython-310.pyc b/osinaweb/customercore/__pycache__/apps.cpython-310.pyc index fd56b25bbcb1e13735fd5ec30c9722f7834f149a..6c530d0cb0a70c3e24e2fe6dc12a75c38bacdaf4 100644 GIT binary patch delta 20 acmaFH{EV49pO=@50SH)MdTivr%?JQDNd-Ru delta 20 acmaFH{EV49pO=@50SKgnoi=jcW&{8e2V!R+E*6+LRY|a+gei+Ti=~Dkiy?)v zm$9f};)!lXrO6?TP9lY|HH~~37gHyr&}0|p6HJ=C zlM`6lSynO>sZajF(#U8rxr)`Cje}8usYrA3Vb&;9O`t_Z>ZpVUkb8^6CO1E&G$+-L S5#$t*GdUPI7=bz&d6)pwX)E9W delta 334 zcmZ3+eTj!JpO=@50SKgnozm<%C-PPD@d0`4K!4aBqnrt3Zfr@=ZR= z+%9;F8%cU4Ly_*}2$n`hm&vzS%!Sw(1(;YExqy(3iGxvqxk!JqIBS%sKF|$Cx~PQS I*&s{~*G diff --git a/osinaweb/customercore/__pycache__/models.cpython-310.pyc b/osinaweb/customercore/__pycache__/models.cpython-310.pyc index 78d22c82ccdb3a385f7f2ba910b51c3b53562380..d097c4551506e71ad27135ec04f700e2cbbe54e8 100644 GIT binary patch delta 1195 zcmaJ=J8#oa6t+`4aS}T*Zd&?o2ZUVLA0nzCFB9ijju(B^WfMWI(0#G z>QMO)(BFW>j>O7<)X5_Q5(7eFLPAKKb5o@O0=c?hPR_ZH?|$dY&yf$KT1(S10)8gH zm%MLB+86QT(T|tTAS<{Mj@03RHN@m+8XHE;VU9k!yqsRcp5aS zsla?EWUk$G8tnDE#7siIfcc5&votHtM27rW9E<95!^}T)ntPQNVX?-1H_oiEwgX{< zHA5@wcH=@;f}qNL-?rfr6*$aNG)EvKByk2a z2#O$yl9ZEGF(>Lc3OIDp5EYyT#vn&;l|po!v^2HCpNSWTyFrvojqDfjfDKcJ%lHjf z2(A)bBS;X;6VQEeYI(7|ytuL&Cp%)nbt>H=SRlAfixkIoQL3FixJy4XE-Gj9T+c)J zYxqOPmv9x`9jFNO5?v^$RR?9ZvIcYzcYmuTDnSbgWx7Xmm(DD zC$WPyf-`;3XqB*V2WOB$P!&N(X*sD9l6tyEgo>sZr(EVayMDM~s{dw0XK_Zcc51TS zHmL#&Q9C^~*YEmu+;R_RpdirgG+>U@lG<(RdxF zO5B6}xNPD|(({xHnM=a%Y;rPhGC`?~MKcj+*PCw5^BADnq0-3>lpPngF|P2&fsP@Z zBOnDgOs!Y7=y`VB;%?)u;yol0xXmmDm{SdFttNE&_wC#k?zoSWcaHpIpr7zRuoZpE f7EN+n=Kzuz=xsnd{yHk!R;SY!4b?~)@^JDOLA~z? delta 1130 zcmaJ=%}*0S6yGV`vRiiBbt&H;niwK08lw`4VhB(u^guzj8r_4NwL49U_7=J7l|0Fir3PA<=>`2t?gd zEhK6%m~9i)#hCVDZw}2>$RW1Li!$>LK$TIGCoT5QlrUB4c-isbRES@(_g`x zRK9j>nj&lpX=}I@p=S-8B3*QMZR|Zkg_BCU%3EQhUgvSFDy-D}Hf#wOm|u&ox%|Pd1jS0yKV}27D%{#f|MPIL+|Vgx2sj tr7!zQlV;*v8{s2*0&&2=$ diff --git a/osinaweb/customercore/__pycache__/urls.cpython-310.pyc b/osinaweb/customercore/__pycache__/urls.cpython-310.pyc index 6a24e04d921fd942c1dfa27eb5d54034d13f5002..146c2984f92b4e213f42f956ccd48eb1e3b24b8f 100644 GIT binary patch delta 20 acmbQrH#GXv-V delta 20 acmbQrH$}oD+6Kx diff --git a/osinaweb/customercore/__pycache__/views.cpython-310.pyc b/osinaweb/customercore/__pycache__/views.cpython-310.pyc index 63909f718d060a75a6ffc442da79136a2541bdce..1a4fec33bc7e65e8ee7589dde9a94119282af754 100644 GIT binary patch literal 9551 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 z%0D4M4r83BRpaJ@69#`y#q7f#q`UT2c{2SJNdQp>9*%(+{A1Uo7~V--e~P{fM!}@i z{j`1<<;GVX15GLV&d9$&$1%0wpn!BTtA+moGO8B9m2mQru{JpKY&0`BOnFF2&ewIA zL#LU8V~#r#YKchPP_g$;LD#vKo5x6kN+)0Qh1|TGH-o@_STbDjrCKR>h}53?T(iC?Y4UvGvp^>RQ!a zsoKLMAvMhxmm7gs>xb82&l`0}l2Gx`E2xvCA>}U<*cU$H1tn;#*sk|6mj1b!YMHo^3Ak6u~FJ4$}eQvor2a!%>-c*t?_wVwP->TIhckl&}~2g$(f z@PL!!Nsi_7Bnp(`C>V}e0;}7Id>{-TRZQ!{QU>_PwqblUpP3=U{?#&>jKsj(A0id? zSLpiCcvs${<=iH)Mc`Knj7R1iPzfwTejSx#Mu_~^p%MBnUWS)aZ`g139m9^^t?6$vNG zG3)16wu)C*FJHO1^2Xdt=T|Sk47E>Lk*#uCy1I6L<-+-E7q%wSlGm?YymI-CD`Xkw z(KNQmiIhJBbis~`$sMA%UJDxaxSYO1*>wc&MsV|@u1XOU;a0QXj%SlAni1zt^*#Dv z#c-4(57s5)Z5@Nlz`R80^TNWJ&v{&q+TmXiq7aWsk_N3Rr@CeSN;ER`2KJm|MDrB09Q|3H5^i` zCyhBc#2qMqwE&wI_LP}&h%jV;hF$0bh9&x@f^T=?nWRg4v$xdh)(}!kO6|szNo7C8 z6&+hjPV^4v!R^TgUm;cZ?F@gyfgIb-KEBrw{P_cac)+(8oF`@7FTX)6`xb$36Szl! zJSmP!*x6zu!%{7YxtYHt5m(a5jxZ;)DS!OnJdXqFxBM4C1T9zxC~I`BqOMj7$mGJs vQ2Epl)M%3yMX5`9%?azhsvmDuB87Tt<#cj literal 8291 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

Jm9sVomV=7Ba z=A1QUUbU_wd7{*Z{=Hw6eEATa6TW2Jfl7g1s#!?_%m!!5Pjrk~BAXeQ$64>#d2tT$ ze>lb8!zw53jx*4IM`!K^DYm=ZI$=TVhCs#^vlGj&Zo_`~j zUB;-v@)znyHbQHNtwS(nC0ewZ7yXbLXu^~Bq|S^amM@>JsxX2#TCzBaapfblOvs1| zd2$t8%)eyPMw{lomDuD>shEe^QxfAK0de+BGJJ{$8I8MToh$-W`|)?;tPe4XA0qf z?EUhA5&tOlMCnyrCfr*^sqR+cFaW1fYP;3Sz2{R0qo3j{1OM3C51+91`1m%b+GP~v z#bk!vQ89Bz@&z2;ApBuh?jXD`-s+GRjG{_MtGjoj)r}(|W6(;Rv4J2-5o}OgJ}OMt z4|Rg3b1MhAkC3E>NWn`~Cs&yT&FaMb$m6hUIWi-5K$VGn zEJjs1B#z%FK>TuDphBG+-T{Nk<6JFPbNvo6oTb)rm9GxeT&or*S(~oDsbrrYZ#~+- zR`}BKwBe6vUCOR?&i^OCRB>zu`KQ$PX9PIaJ;|jVx%=!){uAUex!}vz^Cn%oo#Wg; zFdg7?))`cV)yi1PiRc+L3&`Vf|4F?tHcMA~`z10a+*JF&Z=I!NtW1=tMP}5TLS=^$ z6rDjGlF?1{S9mUp(%cIpSU^fN!!yu*nk7nDXO;|zTTdbGQY&t?_iWR+cQcu52K%QE zjQx3-s>h~D=IJ3uJ21KF$M(=q7GM&U)Mt~JS>?hIcR|Q>7dzc#@h+~B#1&=rcI0p2 zOtckH(V*4aWWgdRYrPoxvQhH?JdyqZ08%#=F=_3({6lK7d9a$&a?RCG&9Z`IjoKOq zFMXja*7VvFpBbxWX+2eG#MN3q*+$rJ)KTFGT|RLPA_pqzdSNU=kuFHKDo=-X$%R!= z>)=eNLZT#1+t-f?+apjVa1%h;$c&Xk+t79qXuIG`mal^#JFWbXs&RJvF8_i?ds(qg z3IB;9V_|g6*&$_zGY{_+Q%P8|0(*)sM^G-|vgET_+xc|L1^!FVvOc@y&QtV%SfRL* zWdYu&D3Tvz=o5=%`9osoHwpYUfgcf=9|5|E<|^#lU_#dMHW8^P=^aI?pW@}{+8OF? zLp?bzL3vS@Wi3ud08_-57)c;b4PWv7B}julD|T=I|6sHxY*4IdJ>;5`fat4-2jgz zfqLw@&v%SwIs5s(Y`(#Hq!xVLnSXg%#@%K|2baS@XRAlSg(C*1xJMDj!p4@uCGd9y{+_@|&U|zh%)tAkuopl(i<`Y!a~@UEe4dtCoSObmDU|;Rf(d0J zFHPwwr#-~z3Cc7sd>cyT;Qj@wk(HGsawHloa$k%524t#5E`Nq8*X3UU@|Gr#kG`*r z9iRLMkS!gr3pZ$=M5$%2Pv%MI!E}5c37rR-%B+q0kg{7x9^!Rk_mo!9L%WyT094dp z8c7&m-0+2JdArM37UP^YXh4&|q}i%DJ*JwCsWLAgk{!2*`kw&4n1g3W93aE#i{<;h z_)9Udz{9E-Hp$12M|}MAm*fMV545virrHnX_y6lK7DmIW*)V+`KOONwRs8DGqN?Z* zhF9Y4u1xCvBxYyNp@%+r;Im;Z=}M%0oBAWnm39~RZ1KiS{*Ei|EBsv%Uj(>oG^NB*!ZbP!xnVj)DPyNyY8iy*@sh3jPYo-~ae(n{PnbLG!f{-_S_9 zdyo$ayhh*=0m_Rw60qH|`mqK`I(|ueA5$MzB>n~&ypApOThVuLOh!xzLd8J-#s4L< wWa8G{!Ogsnr-0{GJQwjiji-nw3{BkApU&RO_+7^H93G;W$3ty2vM^=-FMN&<0{{R3 diff --git a/osinaweb/customercore/admin.py b/osinaweb/customercore/admin.py index fa944c3e..4f3d3dc9 100644 --- a/osinaweb/customercore/admin.py +++ b/osinaweb/customercore/admin.py @@ -3,7 +3,7 @@ from .models import * # Register your models here. admin.site.register(Ticket) -admin.site.register(TicketStatusUpdate) +admin.site.register(TicketStatus) admin.site.register(TicketRead) admin.site.register(TicketUpdate) admin.site.register(TicketAttachment) diff --git a/osinaweb/customercore/custom_context.py b/osinaweb/customercore/custom_context.py index e51fcf80..40f93bc7 100644 --- a/osinaweb/customercore/custom_context.py +++ b/osinaweb/customercore/custom_context.py @@ -33,13 +33,4 @@ def utilities(request): unread_updates_count += 1 ticket.unread_updates_count = unread_updates_count - last_update = ticket.ticketupdate_set.order_by('-date_added').first() - if last_update: - ticket.last_update_added_by = last_update.added_by.first_name - ticket.last_update_date_added = last_update.date_added - else: - ticket.last_update_added_by = None - ticket.last_update_date_added = None - - return {'active_subscriptions': active_subscriptions, 'customer_open_tickets': customer_open_tickets, 'customer_open_tickets_count':customer_open_tickets_count, 'customer_open_projects_count': customer_open_projects_count, 'customer_open_invoices_count': customer_open_invoices_count} diff --git a/osinaweb/customercore/migrations/0012_ticket_ticket_members.py b/osinaweb/customercore/migrations/0012_ticket_ticket_members.py new file mode 100644 index 00000000..33d921a6 --- /dev/null +++ b/osinaweb/customercore/migrations/0012_ticket_ticket_members.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.5 on 2024-05-18 17:49 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('customercore', '0011_ticketupdatereaction_customer'), + ] + + operations = [ + migrations.AddField( + model_name='ticket', + name='ticket_members', + field=models.ManyToManyField(blank=True, null=True, related_name='ticket_members', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/osinaweb/customercore/migrations/0013_alter_ticket_ticket_members.py b/osinaweb/customercore/migrations/0013_alter_ticket_ticket_members.py new file mode 100644 index 00000000..7179f5e0 --- /dev/null +++ b/osinaweb/customercore/migrations/0013_alter_ticket_ticket_members.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.5 on 2024-05-18 17:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0081_status_task'), + ('customercore', '0012_ticket_ticket_members'), + ] + + operations = [ + migrations.AlterField( + model_name='ticket', + name='ticket_members', + field=models.ManyToManyField(blank=True, null=True, related_name='ticket_members', to='osinacore.staffprofile'), + ), + ] diff --git a/osinaweb/customercore/migrations/0014_remove_ticket_department_ticket_department.py b/osinaweb/customercore/migrations/0014_remove_ticket_department_ticket_department.py new file mode 100644 index 00000000..b959e4fa --- /dev/null +++ b/osinaweb/customercore/migrations/0014_remove_ticket_department_ticket_department.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.5 on 2024-05-18 17:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0081_status_task'), + ('customercore', '0013_alter_ticket_ticket_members'), + ] + + operations = [ + migrations.RemoveField( + model_name='ticket', + name='department', + ), + migrations.AddField( + model_name='ticket', + name='department', + field=models.ManyToManyField(blank=True, null=True, to='osinacore.department'), + ), + ] diff --git a/osinaweb/customercore/migrations/0015_rename_department_ticket_departments.py b/osinaweb/customercore/migrations/0015_rename_department_ticket_departments.py new file mode 100644 index 00000000..1b306162 --- /dev/null +++ b/osinaweb/customercore/migrations/0015_rename_department_ticket_departments.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.5 on 2024-05-18 18:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('customercore', '0014_remove_ticket_department_ticket_department'), + ] + + operations = [ + migrations.RenameField( + model_name='ticket', + old_name='department', + new_name='departments', + ), + ] diff --git a/osinaweb/customercore/migrations/0016_rename_ticketstatusupdate_ticketstatus.py b/osinaweb/customercore/migrations/0016_rename_ticketstatusupdate_ticketstatus.py new file mode 100644 index 00000000..627f9ebd --- /dev/null +++ b/osinaweb/customercore/migrations/0016_rename_ticketstatusupdate_ticketstatus.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.5 on 2024-05-18 18:49 + +from django.conf import settings +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('customercore', '0015_rename_department_ticket_departments'), + ] + + operations = [ + migrations.RenameModel( + old_name='TicketStatusUpdate', + new_name='TicketStatus', + ), + ] diff --git a/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0001_initial.cpython-310.pyc index 4813d8182355c5eeb768a1f13e9a498f54dfffd5..4c6031232358162bc724de4874eed8c82dc914ef 100644 GIT binary patch delta 20 acmdnUzmcCipO=@50SH)MdTiug#tr~5w*+MuW_Cs?We}SMEPzUAO}1l^0RS=0B254Q diff --git a/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0004_ticket_ticket_number_and_more.cpython-310.pyc index 4544918004651f8609f1cf4540989f903e6190c4..f865008d895dd6910ba6d556850bc02905a22709 100644 GIT binary patch delta 20 acmZ3;zL1?epO=@50SH)MdTivL#tZ;069jqy delta 20 acmZ3;zL1?epO=@50SKgnoi=h$V+H^!3j_23 diff --git a/osinaweb/customercore/migrations/__pycache__/0005_ticketstatusupdate.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0005_ticketstatusupdate.cpython-310.pyc index 67ab08e8ea3c612abfc3e8cac70b8d846240b2b4..642c7c2d7fdfaed5533d7c4800cdfcc915e3e668 100644 GIT binary patch delta 125 zcmdnOxrLKEpO=@50SH)MdTitlV`Pk)oW$6r%nuaNWctMwo?n!mnU}8MpI0OR7P`ge zoReRino=Y RPO2RvkXOtCBm|hmm;s#s4`BcR diff --git a/osinaweb/customercore/migrations/__pycache__/0007_remove_ticketupdate_read_ticketupdatereadstatus.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0007_remove_ticketupdate_read_ticketupdatereadstatus.cpython-310.pyc index fa736b88cade3b70784a1bfd7b4ad159ea68c4ee..a589f339758af375362e14681abdb6b2bf434b63 100644 GIT binary patch delta 96 zcmZqVY~}j%Phlap$uZPf(1|sO(6Fc bhfQvNN@-529V3ue%mE~Lm;@L(7{!L delta 96 zcmZqVY~o^m|#AL5CRgn aIBatBQ%ZAE?HGZ)Vm2Vb!^FcV#tZF$WHa X^HWN5QtcRlyka&WA;84JD8>u`iK!7D delta 91 zcmdnMwtub2%;2rzLliZKHKJhBiG diff --git a/osinaweb/customercore/migrations/__pycache__/0010_rename_ticketreaction_ticketupdatereaction.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0010_rename_ticketreaction_ticketupdatereaction.cpython-310.pyc index 0a4f961a53e08851d9afdd23aed9267b5759c7ce..7a9f6b1f36778638b7b0ca105c7c3adc71201fdd 100644 GIT binary patch delta 78 zcmZolbT*r7*3&I5RL4*L1xW!?Uo1ape RlWNBZG=$S)F@T*r7*3&I5RL4+WXxW!?Uo1ape RlWNBZ;`KW}<6{^&ps@`%Tz_~&o0p-9$Dsaig^2Wm|ixY=9tJR+AmH*Hl z`g^6Z7k1rn2H)dmFNKiI@p5C4WgnakGbKw{qpxQk&iYTf{Ni#~l zALyWD87q0lDfvhgQ~Wbg9N08`U|FcbE0RP%@IR7J7h7oCqMFzwaKo~gG_oyBWnEMn z1={8w_FM)S9H82LG(a+{NEQJ5!XcbSU#X&#AX~#$u?iG}!E~rNe#}=@_{dfC$R;#f zS8Mo)*bUBC9kKl=pV`)w(B!6p?ETKp?yhKy{0`b#tz-)g$lO0ptZ**s%kD*giW15( zH1;~-E*xuF-8o*(w05HgG+v-YB};HYYZ8XT`T_e4@ABbo0a{%oBNvMDWom3u$+Uub=cuWyCZravVy(RgpV@d9Iy=X#w z&Kj!SLKBlA3n>4?qksnV73II_-PyT!_|?bbe-&n! zd%3I|y(|<=LpN9`QEgmUwMw~h14>wsyb>iiX7w~cMm!5W5_b4tS%8uk)7VA4!#Q^e z=NQ*2!26i<53Nu>)>{&4s3cT*0j9x)5tqDB7MfQ+OA~nD?zyP8SK8|ib&0NFw}!8z zxsNfO`uQb&Z*b5QO6(q#Dz=cm1hcWaPA`Qj$_H;n?TvS)u(>YNZtk>#>+T}gqFU)5 zyoN=3NNjq$`4lOB%!O}q&+z|*&gyOBpV<(PxrZtuEMPSJ9S#{~bV9>l(Vs5j0x6FB hvNO5p#_vY%oVSDZw-e0dqGvsk!Dt4!E&@E7jZ-Z20G literal 0 HcmV?d00001 diff --git a/osinaweb/customercore/migrations/__pycache__/0014_remove_ticket_department_ticket_department.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0014_remove_ticket_department_ticket_department.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28cdc4fb2e5dbe972597eda506999cf1a8ac6b89 GIT binary patch literal 800 zcmZWnv5pfl5cS%d-0mg^S0E%1#Z^dYvN=I<1v(uP0t)UB+|i`5oOmwU#9jy6;S^eE z)AI{_5t3Uf#2U(;-dBGa{*EABkj;OxXuEWHP-Vz1BC(B|RDnT}`a;m8o55Ya>CqaSZK_9Gz2K z?gRnIFp*?PWg_W>4jH7=mc*j6wW4UZqYZo0Otx|E$!x`BzG9e}%L0izAwSzNB7JUL zRg1B)5Do@|<0J08@C(Pia5D^d#|!6;2HRvD4hBaLxKJJ}_tkg?ezR%NBe2-P`ZyF4 z=E8anwQqWieeqgo2x-L2_qYD>_IFZQXpNMpXPC86Do}5F%yzJ8+eHYis|u7n?-e2A zO*PI#!8xk7P=I!q^S2A3B181BFw_$2aRtue!;#Q=4cfeer?E`P9!uF+mc`i3Gf^)u zO~iG)Fmw3(GM|aP6K@gW$EWg*!(L0!l>$(zT0;2*+{~MKc_CD#4_}CRbY8m3kBu&y zR?8Z$8$(V-Ju&OUYZ#Tg3YXi@P@>ikxoz&dQF*J>|0n(V(#DV2#^vrIWP~!Bq`%WP yO`1K8`;8?1mHlio&wFXe*SG1*Q6o^JL=)WhySDCP#gIK(OMQ|=lE`*IZ?iuFQs}e* literal 0 HcmV?d00001 diff --git a/osinaweb/customercore/migrations/__pycache__/0015_rename_department_ticket_departments.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/0015_rename_department_ticket_departments.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ba5887e7fd781e57e93db29c3223c2c5425681a GIT binary patch literal 659 zcmZWnzi-tr5Vqswk*2Q$49p0zyrnJ@NDK&dK)?V+qGHKnrMctDuXY^lJgUyHGQfYq zzvPvPjTs4*b5fKi^`bj{_rsUF&vpj~6(f1_`_+eUoUxzD*_E7}W72S+3^3q^SzdF_ zUNXo)d|@DvZ?ey#&LBT!tKt{cu@#S%)ob4j+I68#pm ziqsf#D834cEMP%xZ^gYg|NE`7xNNs!a29>*Jl68)=;0&f(YjBl2Hl?HpaA>E4;H)O zW+X1AqFBvUaeu~PC1`vHXjIo&jHNShjXJy-(Fsjdsu3y`E2XG>Ymo3#sgK*nq=U($ zuGj%~t;XOpS~u>$!<2lX(Lk(RkJl{yVE#7cNAu^qd>_yUiB=m#WAr7;=NQfh*UQt! zXnXH<(i_Dts4>fj(GXfJ-B-Ta`0{Op3E`53&#rKjj5k+dKs zO)2d#D_H5J9wqOI^rZiZNFThl|Itf*IhvDr{0q;JnA$*tF?qGph{G~pHNxbo(pi@t z+I_QU$O1{JBq;;$s}G~~_#2gU#nL@&5lGfG{LEG~o%F5jWOi3KW;V)NZBz+OrW&yE z@$vJQyn#xTz$Mh8F(p)nn>@P(Ghnnmyms8&2-E6CErkIa4LK|xs6z6tmJKS{ICK$* zHsB6&ZbQyXCEEfJN1T6XMd4cW#>2Vnk=}^97E8?I&p;)i%C-&bQjgv(uFv>letN}c zmnWy^HoD)DgSPuuZibnXP}oq_uoLn-X&&Qo=l*<278)9zK$#Z+MUihIIRSlZRGrL4 zk(W=;McoCLIyadr6Q%P?Bshu#axJQr>d6f(lcAEy!`&sQ>8m?Udm*(Gt#zX9wC$;B zy=}Uy-NU61(FG**81?`9V@A7g@XzHh;*s6&`%g1f-SnDFc8pv)`P|NjaeH)xMQ!l9 RSN#pXW1`3CA{Nmn-hXw!*cJc) literal 0 HcmV?d00001 diff --git a/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc b/osinaweb/customercore/migrations/__pycache__/__init__.cpython-310.pyc index 6f5fac7399f53e967e1f2768526ff890b64e7a30..15834e960675f7a8a5b7b0bbdb5e4cceffe747f0 100644 GIT binary patch delta 19 ZcmX@dc#e@fpO=@50SH)MdQ9X#3;-?e1kwNi delta 19 ZcmX@dc#e@fpO=@50SKgnohEW01^_E;1WW(` diff --git a/osinaweb/customercore/models.py b/osinaweb/customercore/models.py index 3d3dfa53..63e4ea4a 100644 --- a/osinaweb/customercore/models.py +++ b/osinaweb/customercore/models.py @@ -20,10 +20,11 @@ class Ticket(models.Model): regarding = models.CharField(max_length=50, choices=REGARDING_CHOICES, null=True) project = models.ForeignKey(Project, on_delete=models.SET_NULL, blank=True, null=True) product = models.ForeignKey(Item, on_delete=models.SET_NULL, blank=True, null=True) - department = models.ForeignKey(Department, on_delete=models.SET_NULL,null=True, blank=True) + departments = models.ManyToManyField(Department, null=True, blank=True) opened_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) opened_date = models.DateTimeField() customer = models.ForeignKey(CustomerProfile, on_delete=models.SET_NULL, null=True) + ticket_members = models.ManyToManyField(StaffProfile, null=True, blank=True, related_name='ticket_members') def save(self, *args, **kwargs): if not self.ticket_number: last_ticket = Ticket.objects.filter(opened_date__year=timezone.now().year).order_by('-ticket_number').first() @@ -40,7 +41,7 @@ class Ticket(models.Model): super().save(*args, **kwargs) -class TicketStatusUpdate(models.Model): +class TicketStatus(models.Model): STATUS_CHOICES = ( ('Open', 'Open'), ('Working On', 'Working On'), diff --git a/osinaweb/customercore/payment/__pycache__/urls.cpython-310.pyc b/osinaweb/customercore/payment/__pycache__/urls.cpython-310.pyc index f627c4c48c1839771c87fde06a4ffc1141dd8238..af138f75d7bcac144aa7f0f5ea935104acfd5299 100644 GIT binary patch delta 20 acmcb|evh3ypO=@50SH)MdTivr%nSfFn*}id delta 20 acmcb|evh3ypO=@50SKgnoi=h`W(EK=lLV^( diff --git a/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc b/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc index 2718eb3914a02fe6f576d39099ca19e87d0f62b9..b6b631f417a0c084d4ec8c80be2618e9e20e5e1b 100644 GIT binary patch delta 20 acmaEC`Ph;>pO=@50SH)MdTivrAp-zDgay3- delta 20 acmaEC`Ph;>pO=@50SKgnoi=jckO2TYd<8cE diff --git a/osinaweb/customercore/templates/email_templates/new_ticket.html b/osinaweb/customercore/templates/email_templates/new_ticket.html new file mode 100644 index 00000000..d3a7eb7f --- /dev/null +++ b/osinaweb/customercore/templates/email_templates/new_ticket.html @@ -0,0 +1,66 @@ + + + + + + Account Activation + + + +

+

New Ticket Opened by {{ticket.customer.user.first_name}} {{ticket.customer.user.last_name}}

+

Hello {{staff_first_name}},

+

A new ticket has been opened by {{ticket.customer.user.first_name}} {{ticket.customer.user.last_name}} with the following details:

+

Title: {{ ticket.title }}

+

Description: {{ ticket.description }}

+

Department: {{ ticket.department.name }}

+

Regarding: + {% if not ticket.project and not ticket.product %} + {{ ticket.regarding }} + {% elif ticket.product %} + {{ ticket.product }} + {% elif ticket.project %} + {{ ticket.project }} + {% endif %}

+

Opened By: {{ ticket.opened_by.first_name }} {{ ticket.opened_by.last_name }}

+

Opened Date: {{ ticket.opened_date }}

+

View Ticket

+

Regards,
The Ositcom Team

+
+ + diff --git a/osinaweb/customercore/templates/email_templates/new_ticket_update.html b/osinaweb/customercore/templates/email_templates/new_ticket_update.html new file mode 100644 index 00000000..c2c5624d --- /dev/null +++ b/osinaweb/customercore/templates/email_templates/new_ticket_update.html @@ -0,0 +1,65 @@ + + + + + + Account Activation + + + +
+

New Ticket Update for: {{ticket_update.ticket.title}}

+

Hello {{staff_first_name}},

+

A new ticket update has been added by {{ticket_update.ticket.customer.user.first_name}} {{ticket_update.ticket.customer.user.last_name}} with the following details:

+

Ticket: {{ ticket_update.ticket.title }}

+

Regarding: + {% if not ticket_update.ticket.project and not ticket_update.ticket.product %} + {{ ticket_update.ticket.regarding }} + {% elif ticket_update.ticket.product %} + {{ ticket_update.ticket.product }} + {% elif ticket_update.ticket.project %} + {{ ticket_update.ticket.project }} + {% endif %}

+

Description: {{ ticket_update.description|safe }}

+

Added By: {{ticket_update.ticket.customer.user.first_name}} {{ticket_update.ticket.customer.user.last_name}}

+

Date: {{ ticket_update.date_added }}

+

View Update

+

Regards,
The Ositcom Team

+
+ + diff --git a/osinaweb/customercore/templates/listing_pages/customer-tickets.html b/osinaweb/customercore/templates/listing_pages/customer-tickets.html index f3e07ef3..9634f3a1 100644 --- a/osinaweb/customercore/templates/listing_pages/customer-tickets.html +++ b/osinaweb/customercore/templates/listing_pages/customer-tickets.html @@ -85,11 +85,11 @@ -

{{ticket.last_update_date_added}}

+

{{ticket.ticketupdate_set.last.date_added}}

-

{{ ticket.last_update_added_by }}

+

{{ticket.ticketupdate_set.last.added_by.first_name}}

@@ -164,11 +164,11 @@ -

{{ ticket.last_update_date_added }}

+

{{ticket.ticketupdate_set.last.date_added}}

-

{{ ticket.last_update_added_by }}

+

{{ticket.ticketupdate_set.last.added_by.first_name}}

{% endfor %} diff --git a/osinaweb/customercore/views.py b/osinaweb/customercore/views.py index b6642a91..83f46002 100644 --- a/osinaweb/customercore/views.py +++ b/osinaweb/customercore/views.py @@ -6,6 +6,10 @@ from .models import * from django.db.models import Q from django.http import Http404 from django.db.models import OuterRef, Subquery +from django.core.mail import send_mail +from django.template.loader import render_to_string +from django.utils.html import strip_tags +from django.conf import settings # Create your views here. @@ -29,21 +33,22 @@ def redirect_osicard(request): # ADD @customer_login_required def customer_add_ticket(request, *args, **kwargs): - customer_products = OrderItem.objects.filter(order__status='Completed', active__in=[True, None], item__type = 'Product', order__customer = request.user.customerprofile) + customer_products = OrderItem.objects.filter(active__in=[True, None], item__type = 'Product', order__customer = request.user.customerprofile) customer_projects = Project.objects.filter(customer=request.user.customerprofile) + support_department = get_object_or_404(Department, name='Support') if request.method == 'POST': project = None product = None - department = None + departments = [support_department] regarding = 'General/Account/Billing' if request.POST.get('project') and request.POST.get('regarding') == 'Project': project = get_object_or_404(Project, id=request.POST.get('project')) - department = project.project_type.department + departments = [project.project_type.department] regarding = 'Project/Product' elif request.POST.get('product') and request.POST.get('regarding') == 'Product': product = get_object_or_404(Item, id=request.POST.get('product')) - department = product.item_type.department + departments = [product.item_type.department] regarding = 'Project/Product' ticket = Ticket( status = 'Open', @@ -53,24 +58,41 @@ def customer_add_ticket(request, *args, **kwargs): regarding = regarding, project = project, product = product, - department = department, opened_by = request.user, opened_date = datetime.now() ) ticket.save() - ticket_status_update = TicketStatusUpdate( + ticket.departments.set(departments) + + ticket_status = TicketStatus( ticket = ticket, status = 'Open', added_by = request.user, date_added = datetime.now() ) - ticket_status_update.save() + ticket_status.save() for file in request.FILES.getlist('files'): ticket_attachment = TicketAttachment( ticket=ticket, file=file ) ticket_attachment.save() + + + department_ids = [dept.id for dept in departments] + staff_profiles = StaffProfile.objects.filter(staff_position__department__id__in=department_ids, active=True) + print(staff_profiles) + for staff in staff_profiles: + subject = f"New Ticket Opened: {ticket.title}" + html_message = render_to_string('email_templates/new_ticket.html', { + 'ticket': ticket, + 'staff_first_name': staff.user.first_name + }) + plain_message = strip_tags(html_message) + from_email = settings.DEFAULT_FROM_EMAIL + to_email = staff.user.email + + send_mail(subject, plain_message, from_email, [to_email], html_message=html_message) return redirect('customerticketdetails', ticket_number=ticket.ticket_number) context = { @@ -102,12 +124,33 @@ def customer_add_ticket_update(request, ticket_id): file=file ) ticket_attachment.save() + + + if ticket.ticket_members.exists(): + members_ids = ticket.ticket_members.values_list('id', flat=True) + staff_profiles = StaffProfile.objects.filter(id__in=members_ids) + else: + department_ids = ticket.departments.values_list('id', flat=True) + staff_profiles = StaffProfile.objects.filter(staff_position__department__id__in=department_ids, active=True) + + + for staff in staff_profiles: + subject = f"New Ticket Update: {ticket.title}" + html_message = render_to_string('email_templates/new_ticket_update.html', { + 'ticket_update': ticket_update, + 'staff_first_name': staff.user.first_name + }) + plain_message = strip_tags(html_message) + from_email = settings.DEFAULT_FROM_EMAIL + to_email = staff.user.email + + send_mail(subject, plain_message, from_email, [to_email], html_message=html_message) + + return redirect('customerticketdetails', ticket_number=ticket.ticket_number) context = { 'ticket': ticket, - - } return render(request, 'add_templates/customer-add-ticket.html', context) @@ -231,38 +274,34 @@ def customer_project_details(request, project_id): @customer_login_required def customer_tickets(request, *args, **kwargs): - open_tickets = Ticket.objects.filter(Q(status__in=['Open', 'Working On']) & Q(customer=request.user.customerprofile)) - closed_tickets = Ticket.objects.filter(Q(status__in=['Closed']) & Q(customer=request.user.customerprofile)).order_by('-id') + all_tickets = Ticket.objects.filter(customer=request.user.customerprofile) + + all_tickets_with_update_date = all_tickets.annotate( + latest_update_date=Max('ticketupdate__date_added') + ) + all_tickets_ordered = all_tickets_with_update_date.order_by('-latest_update_date') + open_tickets = [] + closed_tickets = [] + for ticket in all_tickets_ordered: + last_status = ticket.ticketstatus_set.last() + if last_status: + last_status = last_status.status + if last_status == 'Closed': + closed_tickets.append(ticket) + else: + open_tickets.append(ticket) + else: + # If no status is found, assume it's open + open_tickets.append(ticket) for ticket in open_tickets: unread_updates_count = 0 - last_update = ticket.ticketupdate_set.exclude(added_by=request.user).order_by('-date_added').first() - if last_update: - last_update_added_by = last_update.added_by - last_update_date_added = last_update.date_added - else: - last_update_added_by = None - last_update_date_added = None - for ticket_update in ticket.ticketupdate_set.exclude(added_by=request.user): if not TicketRead.objects.filter(ticket_update=ticket_update, user=request.user, read=True).exists(): unread_updates_count += 1 ticket.unread_updates_count = unread_updates_count - ticket.last_update_added_by = last_update_added_by - ticket.last_update_date_added = last_update_date_added - - for ticket in closed_tickets: - last_update = ticket.ticketupdate_set.order_by('-date_added').first() - if last_update: - last_update_added_by = last_update.added_by - last_update_date_added = last_update.date_added - else: - last_update_added_by = None - last_update_date_added = None - ticket.last_update_added_by = last_update_added_by - ticket.last_update_date_added = last_update_date_added context = { 'open_tickets': open_tickets, @@ -299,7 +338,7 @@ def customer_ticket_details(request, ticket_number): if not TicketRead.objects.filter(ticket_update=update, user=request.user).exists(): TicketRead.objects.create(ticket_update=update, user=request.user, read=True) - last_ticket_status = TicketStatusUpdate.objects.all().last() + last_ticket_status = TicketStatus.objects.all().last() else: ticket_updates = None diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 707be33c43f9b6ae59ea7910811a40a5b0ac9d33..97d1cc7708e591e39e2bdee5575870b8ad245c38 100644 GIT binary patch delta 8652 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 delta 3324 zcmai03se(V8lGoDCdu5HMCGNtMJoc61oE;L!b9E?l&9S-uLLAOl9B*Iw<{^0;85@(p_i8)9$v_dhLUe<_q&_sUHIm4l*?-C81q*ZFWmbQ#c3+N~-NlciBAX_CH)7 z5}`4gb^4?fy}@A8-5rKuL1~z8DHb$8G{JwpHgrX4xyHS$E_=Dq+?D69%okD`b<2uO zarLeOPeW%%sy=yzsa#XIq9iNBwoK@3%gL|Mx0ZRTQr2jl4as_gF|~84r?#c3)joql zgJv1@H#SoQhV5?=37bJHpewG$?aVL9a%N zH@jC zDs3oh5n6LyUYDb)#cj<=c3MhJS+xybZ=R*(=NS!A8l71ym^IoYok`FcOoL}#3u;J( zOc<1oeUA^yPRXTyYfapsFfo3CU^*c=j6XuiZi_wWEsKk}pTg#A{&!-<$m96ubWl8q z2+({XRE*(;etzo`6M?pt0a0F}w8xi|^0o+ndrOXnHxD1;YB$Hv`MFyiu zW7KFgeG|o$I8jU|3@a#b8Ux>fTi`VK1pRdwh^HeZnjZWmksgp-!TmjBOT@%KNEYMx zA+d6oWGju|fsY)Nd?!x5B8isZ`$T%Lq!<^=_ep{Y_|6s(D{dT=Tn-|`)R|EEswAXu z>l+gENYN979+|lH4W?}>M9MZ|;2`J#seoorvd^H;{U{<82tolXHvUPzV;|W<^h0Tl z;wZn0>?Xe_&14wyJ@FxNfaph~4&X5CCeFa!b&BCRsfk*|7M)oT%vxQN)}S{Uwb9GEI6} zlujzEap*j!{8+Sprfi{6%9n_jFDgS`mLP~_l}9mK<6e(GLIxFQif9q z7>!yOPRtO79l>{!+c7w>1#A`jIqnG}f)1uRT1FGpZR#uP8g+s0p}Xidx|#edxdWVq zJJp<3+@|JIyX>KuaDFOhCv2B8Vn&oR9{Zl7OHCf(i&S;4N}gCL7w!QBhge^fmi-X2va$bHGZv!ubbI>J{5eWU77 zIQ*7cE^o3`+w1kHRHmdr-xQ~YZ;z_ue%Td$l?x4ziCP$Av%72CysdVpx4Ov|bDyLK zi<1U-WTtXb?wR5)QNH-zU^sRJ&3@oK_bd3q5%nT`PC$_ZTaT#Y;nGpH8D9FF zdzxY*v9%Dn{)jkzfujhRUXKThXOF4r8E&kDd(QA_sBS!TR2>aBpWzw!!BuWHYWFFdxe{zdSiO$!UwN%2jQQOt66ybGB+Xj z-Pao;4gNI>LebqIJTszRh|hwS6Y3a<+OyzyBkBZk&vmYXkNO&sWC%l){uF!&Zi6qu zW$+%N$Wib%cmoW9Aw;Nc0J=9(6dc~fMdb#v{2!SQFu_dC$UyETW`ZJdnVA6r@(p7% zr27Pn+@s(GvV9U92g6_(+1&}|2CV%zn!$6Cyju4QV*O_%?gT%v^ z_@&ahO7F)z&GF~xQdc|;q|$yjQ|zTg?D{90aV5i28>{+@9P-~Oo6lD3>XLh03&GnSMCwu zSfpwR8BG^KX_P7x=}B5Fny(TWG8QC5sh|qP;oQCW=+ac<5wTzi4o;xTz8Aaz29U+| zU>#Tsx^0&WqKx_qxqk1G!)Pm! zEN<>sUBko4evFd_S0wx9^*(U#Z3(<_p9PNZrslxw&yYQE3aWO?r4D?RG&nh#=p&)v zBj$)NKdnM%&DXZ8w!^xes&~Xg+f-^?uIM8&rNL=w#5y}n-k}PGV7rQjx1Un&hujVo z1NWRpJKOeCyaSd@@TbJSr&SCAh2N{jq-+}|l?GRdk3Oe5A1DdMgTCw8ceP)RWb5&V!ccajzapqZyvdSD4B`vvi<@Q{gS8$cL zSL-@D>WppO?Wn~0r;{I0ka^l}h=@Y5| diff --git a/osinaweb/osinacore/__pycache__/__init__.cpython-310.pyc b/osinaweb/osinacore/__pycache__/__init__.cpython-310.pyc index a4416e70c667362bb0e2d78aa37d9e884859b932..24d1abc631c6431a63fc132de072b9b7ab5db630 100644 GIT binary patch delta 19 ZcmX@Wcz}^RpO=@50SH)MdQ9Zr3IHqU1gHQ2 delta 19 ZcmX@Wcz}^RpO=@50SKgnohEW`1pp~#1R?+c diff --git a/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc b/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc index 4c8dcd4b1599b4d47a230c004d306102115ee5a0..826962e2015f84e82a0b777067e898aaa972d8f8 100644 GIT binary patch delta 20 acmeyy_l=J`pO=@50SH)MdTiv*W(NQ|TLlXM delta 20 acmeyy_l=J`pO=@50SKgnoi=i3vjYG(Qv`(o diff --git a/osinaweb/osinacore/__pycache__/apps.cpython-310.pyc b/osinaweb/osinacore/__pycache__/apps.cpython-310.pyc index 6a192eeb3a6d0252e80715d42161d804ec2431e3..005090e692242c2b244e9a44264e785335af361c 100644 GIT binary patch delta 20 acmcc1e3zL!pO=@50SH)MdTivr#0UU2;RPfB delta 20 acmcc1e3zL!pO=@50SKgnoi=h`Vgvv(*#w>d diff --git a/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc b/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc index 3185cec6099532d61dab798a64a62d5a785bae55..c583121899d77733adca7670cd1b4d30f736667f 100644 GIT binary patch delta 20 acmca2enp%+pO=@50SH)MdTiuA$qfKEQw2K! delta 20 acmca2enp%+pO=@50SKgnoi=ixWCj2&0|YGq diff --git a/osinaweb/osinacore/__pycache__/forms.cpython-310.pyc b/osinaweb/osinacore/__pycache__/forms.cpython-310.pyc index 1baf818d495a1b4f6c0b0d5c9e97c3c9da33e58e..f2b01981a3813f075ed120abb95a17c93155a7c3 100644 GIT binary patch delta 20 acmdnYv6+KApO=@50SH)MdTiv@U;zLx2m~_# delta 20 acmdnYv6+KApO=@50SKgnoi=i7umAuo00XT6 diff --git a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc index 4e28e2f4dad1d2c4d870ac7d4b55e76fbfad20f5..aaf67d1e31cb5c0581e05b7f7e94e4ba3a87e530 100644 GIT binary patch delta 20 acmcbaelwjrpO=@50SH)MdTiuAXAA&Cg9Z`+ delta 20 acmcbaelwjrpO=@50SNAdIBn!UXAA&E$OcXT diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc index 21220fd7c4bb2f6173bff80f4de147714295e865..ce2da76c3f23888137330963b656b4c1938070b7 100644 GIT binary patch delta 20 acmaDU|5BbipO=@50SH)MdTivr#}5EIzXgr} delta 20 acmaDU|5BbipO=@50SKgnoi=jc;|BmZw*?3Q diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index bb844e2b030a4ac9f6b9197260816d889edc0da7..390891977ab7d11744ef275e36234bb5cb42dafc 100644 GIT binary patch delta 3615 zcmb7GYj6|S72dnMTCKG!$q!kw@e3QjWH1Cju(4}w43tNL`v{O34|FTMGFaHMeYG@! zu27mcnehzaPTJ{A)7o@eN+v0xrfJib1W3|Ah7zVfT2RwM!_Y|@o*`}1kl>zkC4osZ zovA$g`P_5PJ@@QA=idGP{2h|~F7XVz-7W!sMe@r2=e}{k^RF2$1%_XOC)UrrMQhgP z#}&&Jks^w%nDQ7I*CvFx({@I5)3HUQ9kyfKZ7UOm2&1*OW2vxVQ(Q5XxN1ugLRZ^L z#4|3#jI5}NGDMLgs_A5hi^}R%pJ3}|mQM%>wmTrS2yu1vK3g@_8A4pc|9-*D0$B$+ zi|NHhiKnf++nGdsrpweIqkM?(iFz|OzJfj`-f6czwqp24yKLEZnC|b1ajzAy1=C}D zAC~SFg5I8wwfYe{90~VX#(=qxB%MQ{XlPTIaxpx#F-&6%QBFH;*H%Vnewhw$qTyJK z64)=g1K_=E55N~dN-9eRhht%rZi4}vD&Cpz26v2quNAVk#^|Fsr-|(?IaG8I#h)YW z2S{pzp_paFxEs5_)F4OLk*WfAr8Fqz5*I5fYaqv1PuUf6oJ~{~B#y(Jdmw|D4uUHB z#0p84(^B}13@uv`SD|HH@IKj*98AV^juFu3#x*OK zC#Z2PwBeXEo;M-Heqg&y7c{JEbj(h`M8h}wEnBgjrUsp*Tlvsgx~=oha`*HWSOa}q z!q(OiGh~GggJZ}v!)B25<_>}ms+~5XZF^q*e=F(FplsmpHNztzY7K>>R?IL4qLg^S z0F9~gh{ncktfs<9_-QSu>0XE$=tLKFN&Kf@|6g_$X8A|~%o86}MNt-sa#L66 zncdaJtf2A@Cu@|ZzA?M+0C}ce~ZtWHDpznYOy|BBwj_s=XI{6#B zR#ThzW+sDdNtR_y^IddUSG$3{$1j!>wO;M?t=aFRF*~@LT*Sp)7a`(1X#5HLYwbL? zKe(7}2$pD<0?5O;Sz!2b3&?Zh&59&8aK6j>FRk9|9zmRDaQb@cd8C@e-Z= zWllNyXm@=Hxxz~8L(0F=`D4t6eZStT&4d)_2dKLNKKWNb3d%h}I5)hR;m)UTv%lAO zE1#gx+dS^7xo%$&=JE1D>UgP2^izT5wB)fJbJw_ELth(UpGaS0XXhHafZM{=5@EY$ z1!iehD7GcN4UHHJFKJ!$5m8F_jFV-z_#m7*gWd#NQ0bvl7#BXNso+#3EL!Jhr{?(; z8I=mVIIk+O_>O2IkLIB2WbIuV5vK&!JpV5D3mE7CMwK8zI{%Gg7Y5+x8Kw)toYZMd zrOnnhv=(Qf19~N07TghdG@+0hYIU}+;j3gd`=p_n_$M103yG3ifPJN@oIKBBO^xJ5 zwzsK7c^=o@!`^BtxaVaQ`C6XTS_K$tKWYn6nt_1+No9zCX6Zv{dli9ig%ittS@ZBrRY-#DOE!_n+sJ0v)8R+9B3yQRy zjVuT`%Q1lpUM+TIfh+K12=&=2IcOz>JOpodvSqG*`wgm6)5=-{mCW35C7yTrg z&^p$z@J9BZK(Sq|TG>{$dS=xKJ-|BJ3dvD+U)xiGd|WIC17ec}wbXteWm9c6WHzg5 zuOM^Ss`gHDl0DhpNE#P0Z}rNqp>b$1^i(F~ILJ0RJvjq11%%5_@)02|3J; zE$R-mfK$@dHyn)umx24AKEvHud1nV{W=3ZjS-=vVi^)}Xr1NfZVWvi^NK4r4t{^F8 zYrE>SatXrD#P!-HpX~a8kaiaD4wDXczPp~xXE{q|lSPvqOZKAS!cs%&MAt61YFPzY z!G@MKCYFGr4|eF*55I%BTT9@HZ3ZiTv*V&I0>ANQ_|3S(B*0~)Xg=2{mJ{qMGM%&} zjgf9)f*_~J_yXsVZ3*~5e%z6!!VWW$;ljX+fx!^Yg=OHvjx-m>37g{%(-C*VqjHWz z=my)7VZ@e~b6E$n>PWV!An6#-0V<GLkdk!N7^KGTv!jRssm_9h2-Vo}tTj zjpt4X>!r9B*W+&6X=|p76K!o8(RPkL0A$6*i8lNPqOEbF4FtxI3{SHiMxLz$`XGYC z$hTF%6n!S94kTy2hx2E*?cprP(?j>czSCzBoTX|5VltwyK%d!hnUxUZc{Y3y~l$0juFL3xvgcN^9iC<^GLJ50-6ApS9rC%fb z2H_9_zlx5agnbkArp^a%aL$$vqG>7QoVuQl;*j4%e9l8K%=!E)>CNSZRsGP=u@&G0 zq(aOU70C~`uuBwg$_|wPZHGVcL3Vk0Jy|wcyrNS~9K-O(5zZhWSD&G@F{{5b5;@j2*n6x2$cxc2z3aJ2n!L~NFHE2ii;5NG|^@3(yB4i K%D#E`#{U301eSsT delta 3403 zcmZuzdvH|M8NcV=yLa#Iz57VA?1N+z$ct1lfyG^y7QaZ*_Pdgn{oM782f@p0RiXD|li_~ey_77XjT03Rh>QIC#^f6VDe&5+7 zJf_L)?|%C|e&5;iefONNu$R31J>nnn`Md)BJr?QTmb6~-|7W4s4PU*1c>J-Vl9k=O;3AD#?P5T^WKOw?cgX8KG?irh?XzW;d)ubL09NqMVgoxnyBEkwGua14$QB8fJkk{}T7EB+=I>^2-SRKt# zjG&_fmN+V4Dd*g4mu00atj+XKk!;8e;JT(4>=*L>Twu-yo~jv~60h4Q(ZTTpO?a%& zksX&=^0b%_*bzrCOP#>ir7sGJvdt4((n&z)S^k) zqX}(eZqZ$IWQe9Mi;jaPL1-<16tv-#WgC{AvUgha5a=iYsHR^9JRkG}tOn^hAfHWD zP}EVRm$c%%0XmPs_pjs$(un}?2q9&=^YtOs47 zx5%{DRQHo<4T=RFMmIa|te*8jFSxV*yeB7{&=>IW+#CgLrFpL%zy&*A&gC(^Q_^&B zzhDhRr)bb^%Gg#%nRHydnOx9JKw^}QwK+0`$MY_vye0i3nEwAHS0QpPe%z59+0>zz zG&=;nJWZ~@Hqfj(0s~*x0vFdbjqYQ7+JC=+*b(k2A}1cTWcYF zqxL!n6(KI6(|SzsErdNtw7;e-`g;(z7T=a48GRe=e_%hWY22_5L{%&$rKCb!NK{cK z3yDlr_?JNriBXWmuPLH}Ixz?~l+dP#V39=+guFW^t#<9=@~xu3kxGj3`KmYu|m zoK2Et8P|UvymphnbB|ymp#5e({sSJrC9#RMH^#NIs6T+b7rFjQqK90+7u@rvVo?Q@(GfDiah0kft^++2Pf_!uc8 zf{aPuWzEg&$Y)Q~$JwLJzOqG_8+RCfDVATN*Vqfq5BN?Yiv#eSNKdhv+YDXAE#qnz zVJB)LwVIu>w$Em6L>fFg@h8kTn}@I$o69Sx0HFzGGlff0pb`QyQyC=oP*aG7TEdEg zYL&IL)I~aOA`^M%x~O+%xJ82vA#D8i7T@zoa2OyV!TOHgex^c4f@7$La3N7re8Y;X zW_w#ZDl~LJuY%Veu~Wl_o!OD5KGgcz#nyXBAM0*QlIYBXZ84%06R_{LFD3`sPuttb z5q6Cwy}-%mI}YuJ(HDR&Jf zuH{8q>={bi1{TWN2W+>N$VKbfmKCqUZ!7I+)~~OB2@ht29T9SfeWfEVHW1cRTfvTY zbVj&W3{yM~D=4_^j6IyD<;=ZurNV9H?2eUHC9hyQ1w3>yOoD_iV-K$UB=|>AOsI7m zJL@(rsvD(;*+ZQ%NbywXLRDvo2%ML zazYSsG&9y#dm|?&@7idS;y7AE8@qzoD!{w_diV zznXNh=lk0x?*PRh?AiPu?gH*#FMOg*sh;U6mke5uDAK>GHTOMwE zS`U++Yg&PML9yN3U&7%8rau|R5Hjrniz^pHFW|x$FV2hk$$9r#B@DJV2RRBPT!3Q; zjwAOmZ{0V<5IDn4P9^?>XF*#o02#5j_n!^9yO zK46dxKMW%92#k3g{DodVJ_KQW&}PR69Zs>W3vQkT=VnUSIf1@_fP(~|KKXD-U&61~ zPYRLpK@r`}aJqXyTbUi`>I=qaDckU#&v0Zl#{15rGR6 delta 20 acmey({+pdUpO=@50SKgnoi=iRUb%m6a(P^ diff --git a/osinaweb/osinacore/delete/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/delete/__pycache__/urls.cpython-310.pyc index cd9aec5923447d8f5b9eabfaec93765df0ddc793..772b82f5a1d7c17e05bc7a55eb2edcb3c07dded0 100644 GIT binary patch delta 20 acmdnbxu26epO=@50SH)MdTiw0!U6y?3VFv&%p9D$( diff --git a/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc index f3d5d3ab59a5228aa2aa59ab8e19600d3eb451a5..a05932e2dfbdafa1972d19dd1ca20a3c77e65998 100644 GIT binary patch delta 20 acmbObJ0X@kpO=@50SH)MdTiuw)dK)Ft_2qz diff --git a/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0001_initial.cpython-310.pyc index d32793ba1963e2a9204c87a4f6ba7ecd9c3d36c1..aa357b663ec5eb0609d52e7be41d0dec29200c6c 100644 GIT binary patch delta 20 acmeAY=n~-0=jG*M00P#R9viv;vjYGt!vxC! delta 20 ZcmeAY=n~-0=jG*M00QY?r;XhI*#RiK1VsP< diff --git a/osinaweb/osinacore/migrations/__pycache__/0002_projecttype_alter_business_options_staffprofile_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0002_projecttype_alter_business_options_staffprofile_and_more.cpython-310.pyc index cca61d4ea102e1695f921d24c2bd7e41c77e18d4..11b97a391203eb8cd334b4b86d02ea27a18d44fc 100644 GIT binary patch delta 20 ZcmZn>Y!T$n=jG*M00P#R9vitUIRGj61Uvu$ delta 20 ZcmZn>Y!T$n=jG*M00QY?r;Xf|8~`Tp1GWGF diff --git a/osinaweb/osinacore/migrations/__pycache__/0003_milestone.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0003_milestone.cpython-310.pyc index 90cab1f36c548b41a63286e697a5748eec979975..62ef229662354518a1da0f3fb90b6f8abb99c10c 100644 GIT binary patch delta 20 acmZqSXyM?_=jG*M00P#R9viuTG6Mi9uLPw4 delta 20 ZcmZqSXyM?_=jG*M00QY?r;Xe{nE@uJ1RnqZ diff --git a/osinaweb/osinacore/migrations/__pycache__/0004_epic.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0004_epic.cpython-310.pyc index 1cb9a6c329222cf7f944dcae4cac8cc3b8b90e87..d887006bc75c2bc5b166bd2df711ef0a0252c685 100644 GIT binary patch delta 20 acmX@jewv*-pO=@50SH)MdTiuAzzhI0qXhT> delta 20 acmX@jewv*-pO=@50SKgnoi=hGU RPO2RvkXOtCBm|hmm;uZU5H0`! delta 78 zcmZo~WCW&n)34 RG(iHaU{O>;f3hcw0ssNQ5d#1K delta 81 zcmaFK@sfi(pO=@50SKgnoi=j&GBV!U9Ld Rv_Jx^U{O@UV6rER0s#HK5e5JN diff --git a/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0007_project_project_id_alter_project_status.cpython-310.pyc index fceaf33719b7131774c0f6fe6220dc26c397ccd4..1322c1c2cda44aad8f94625f50ef559c0a040b6f 100644 GIT binary patch delta 114 zcmdnNwu6m3pO=@50SH)MdQ9Yg!5B61OS~x`kgv&fi_In;cNQNN%zg(-Q#*6U+w@@{{G5r2ycj9G(CG delta 114 zcmdnNwu6m3pO=@50SKgnohEX>V7xW)OS~yRkgv&fi_In>W_3IvS+ delta 20 acmZ3n?iCQA{BQ^d7d zf{BfhO&i44o~*+Bk5O^5GK-s)8c2W@EQ(6#0J*m~Y;yBcN^?@}7=gTEkaZkPJd6U2 I9E@Vj01vDe^8f$< delta 133 zcmZ3?xtNnXpO=@50SKgnoi=huGcw+qoX(iW$Tj&Kqq#6h;ucG3acYq!OA&}u#JyR9 ziH(s>2gKHytit?{QE9R=i<^}?NPrbAic07LxwklMa`RJ4b5iXXfxKdnK^#mxi~@`t HjAG0H45AnL diff --git a/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0012_projectrequirement.cpython-310.pyc index 575e81d971ab6f08a49417e0cd5388b6eb0463af..ec591dd98fd64b7b57e1be55865eb2dcce6a77c7 100644 GIT binary patch delta 69 zcmdnSzKxwbpO=@50SH)MdTiuoWn{dyS&*@tkxdyWRHQt45z{>>IS`Wt%ts|uCeLD) F0RZy$4PO8N delta 69 zcmdnSzKxwbpO=@50SKgnoi=i_GBQSO7G&&ZWK#kP6)8<##B@(e7Q|!$^HB-q$+MVc E0KKaWQUCw| diff --git a/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0013_projectfile.cpython-310.pyc index f2b974f2bca97f6adb5927f64ad000dbe5ef6456..b99dbc62044ab998a893eb520d168bb606b57f4d 100644 GIT binary patch delta 98 zcmcb>eu14kpO=@50SH)MdTivDWn_$+tjTzuk$3V>#sh5XK=C5=$@`gZn<;^qEMPt= ep#kLH;;_lhPbtkwwPOVGirIjK022qJ7&8DqdlOdx delta 98 zcmcb>eu14kpO=@50SKgnoi=jIGBVzptjTzuk#F)(#sh2`K=C4t$@`gZn<;~sEMPt= ep$X*P;;_lhPbtkwwPOVGirIjK022qJ7&8Dms}orO diff --git a/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0014_alter_projectfile_file.cpython-310.pyc index e165ed8bab349cc7ca5bfc2e7b4d50e385368b50..d0b4a24d1eb74ef7752c9380e41f545f437f3214 100644 GIT binary patch delta 96 zcmeBS?P2B4=jG*M00P#R9uv9G2uBGR7#JGI7Zl}Zr6!l8W#*(tO?1qOfVlrhy#gR95%W6DWy57c8ow?F$<6oU=m{n0KB0Vh5!Hn diff --git a/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0015_projectcredentials.cpython-310.pyc index 3c20f5bc7f72fa20bbebde82a8b52d6258c6df90..9a553b5c3c9d2beee9c19b3021226e1f67a2b0a7 100644 GIT binary patch delta 69 zcmcb@eubSopO=@50SH)MdTivjV`Pll?8TVF$fg1mDpHxehv|`&Jc!8x=A#m-lXo!7 F0000b4Y2?K delta 69 zcmcb@eubSopO=@50SKgnoi=jYF*4rT?8TVF$fgPuDpH-ihv|`&0*J{1=A#m7lXo!7 F008_24YB|L diff --git a/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0016_rename_projectcredentials_projectcredential.cpython-310.pyc index e1e8e4d9f7ebaf204f47d7fbb590c02a425c8314..e1f13dc0fe08c04c847c7bd38adce56b4618b1a5 100644 GIT binary patch delta 83 zcmeyw@`;5zpO=@50SH)MdQ9Zr!gy=q0SO>+a}t{XP_Rf~av|e&EeI3L2N8lm;ueQZ VZhlH>PO2RvkXOtCBzTy_m;s;x65;>= delta 83 zcmeyw@`;5zpO=@50SKgnohEW`VT_u1KmthIoW#Zl6fEMKT*!D`3&I5RK?FaLxW!?U Vo1apelWNBZg!1Aiqd-@+QV-S`a3f4gzsAiqd#@+QV-S`a3f4ub2%;2rzLliZKHKgUBWi delta 165 zcmdnYxtWtYpO=@50SKgnoi=i3GBVzpT*|o6LI^0L$@GgWJijPAGcR4iKd(p_EOd*_ zIVZn3HKj-d$bESNB*uJ;Jvk#kGdZ=mNMN!bQ#hmeub2%;2rzLliZKHKfNv%i diff --git a/osinaweb/osinacore/migrations/__pycache__/0021_alter_customerprofile_business_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0021_alter_customerprofile_business_and_more.cpython-310.pyc index 53c5bf3d1f27c8e782be10fc07f213c9a2c39328..62699c0ae1ea466346b5019ad14b9c2ceb934baa 100644 GIT binary patch delta 215 zcmbQhGl7RYpO=@50SH)MdTiwW&B%CbGCNZfBiH0ECT%v5M3M01-As-UCii3}W{Yq+ zpr|I(EzaQ5;)2w?l+=_Wd58#CNNQ1TW?o_mP)GqN^zsBqoVf^O%q{lhjQq^x)Z!vx z5Rav_IJF2WRm1}nDdL?xk@*RmDTryhxtb-G(Lx8rW(5nN5@tZ|Ee@O9{FKt1R69l> Rub2Z!@GuE5axjW90{}JOE_MI_ delta 215 zcmbQhGl7RYpO=@50SKgnoi=j+W@L<-%+A!r$T_)-Nt=xmC|)Eqc{h_Igvm9TiP<7t z7AUI8bc-{%w74KOFC{glNDd;x6_Q$%o0*qb0u+)53cWl55@#*~8FPz0IU_$aIkmV* z2*hJ4Elw?hN)>SfMT&SPPh@_=W&&cGY_4XBWwg)+v01?asDvqydyB&+H$SB`C)JJ- R$SdXm5I6~% diff --git a/osinaweb/osinacore/migrations/__pycache__/0023_task_assigned_to.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0023_task_assigned_to.cpython-310.pyc index 27fab2391724de355ad9315dda0ff23c658e6e78..e85990c432fc99a8ba6f08be9cff22ddc11838da 100644 GIT binary patch delta 20 acmZofj=jG*M00P#R9viv8F#!N5?gWfj=jG*M00QY?r;Xg-m;fc_1Q7rL diff --git a/osinaweb/osinacore/migrations/__pycache__/0024_task_task_id.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0024_task_task_id.cpython-310.pyc index b98c8121bf81e4fdfdb032083360c6c4aaea2e97..52c7346936a4042f02582e194e2a55a851ee642f 100644 GIT binary patch delta 20 ZcmeBW?PcZ8=jG*M00P#R9viuvm;foN1UUcz delta 20 ZcmeBW?PcZ8=jG*M00QY?r;XfAOaLaL1G4}C diff --git a/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0025_status.cpython-310.pyc index 9943add185f9bf5660b86f7ee053a46d173f7391..70320aebe74561219327fb5bf09302d9ed9ab0cb 100644 GIT binary patch delta 19 YcmeC?=;q+g=jG*M00P#R9t*iy03_i9s{jB1 delta 19 YcmeC?=;q+g=jG*M00QY?r-j@s03u%lB>(^b diff --git a/osinaweb/osinacore/migrations/__pycache__/0026_remove_status_user_status_staff.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0026_remove_status_user_status_staff.cpython-310.pyc index 631c60886158f536493b8ef57ece21de1dd02679..67bf4f0f6e34031c7bfd38e7cb9fd4ed91df109f 100644 GIT binary patch delta 77 zcmX@cc8rZXpO=@50SH)MdQ9Yg&vXN;QoyMc`Z$S>lY+{ieKO%}wIovg_8UP=PQWC8P0 K3AxEy%rXF)WDh9- diff --git a/osinaweb/osinacore/migrations/__pycache__/0027_alter_status_staff.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0027_alter_status_staff.cpython-310.pyc index 190fe5308776990bd7c580545c231f810d72dd7f..66670c33333376cac3daf1837b342f48d390a000 100644 GIT binary patch delta 91 zcmbQoHjj-vpO=@50SH)MdQ9Yg%ow%ty(A->G*F;OdNLo=Ei*9?lLgF2C1ilyTO2mI X`6;D2sdkJ&UNIYx5Mbh96k`SeR4))? delta 91 zcmbQoHjj-vpO=@50SKgnohEWWX1ulWy(A->3{ap*W-=esEi-WtlLgF2C1iozTO2mI X`6;D2sdkJ&UNIYx5Mbh96k`SeP{I&o diff --git a/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0028_remove_projecttype_color.cpython-310.pyc index 2d0416111f8fc571e005ee32469f10c413cebb7b..4e9abdc9c24f7fb18eef7f0dd74aae1d09d74dcc 100644 GIT binary patch delta 20 acmX@ba*BmJpO=@50SH)MdTivjX955+4g_uh delta 20 acmX@ba*BmJpO=@50SKgnoi=jYGXVfE1_S5- diff --git a/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0029_alter_reference_date.cpython-310.pyc index 8f8e2c8dcb368318bc625a82d8c2dcfaaa61168a..2ce7dddd769ae5254d64a5dfaf1f05f069a2135f 100644 GIT binary patch delta 20 ZcmeBY?PulA=jG*M00P#R9vit^m;fpI1U~=( delta 20 ZcmeBY?PulA=jG*M00QY?r;Xe#OaLbG1GxYI diff --git a/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0030_tag.cpython-310.pyc index 51e41bd409c98e01069af130193e6df556a6d3fb..9bde2221b4321c292acd691056bf5841261f4199 100644 GIT binary patch delta 20 acmcb}dXbeopO=@50SH)MdTiuA#smN~N(BV~ delta 20 acmcb}dXbeopO=@50SKgnoi=hGV*&s%LIi&R diff --git a/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0031_alter_staffprofile_image.cpython-310.pyc index d72eb6b2a6213bc740bcdd60f4753d2303fceef0..60531a8398906586eeb8f5075640d41f378337cb 100644 GIT binary patch delta 20 acmbQpI+2w-pO=@50SH)MdTiuwV*&swN(4m! delta 20 acmbQpI+2w-pO=@50SKgnoi=i}F#!N4LIb}5 diff --git a/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0032_point.cpython-310.pyc index b8490d9f85fb6d21c7df52898541b070f48fb14a..f447ade1e560bb37fe16980c503d88849d8dbe2e 100644 GIT binary patch delta 20 acmey){+*pWpO=@50SH)MdTiu=!wdjAg9Us5 delta 20 acmey){+*pWpO=@50SKgnoi=j6VFmyV+8VwS%8E9 HlNd7q1=Su4 delta 119 zcmdnXwwH}NpO=@50SKgnoi=i-Gcra^HfD5DjN(g4EJ=+o&o9c(%uCPDi{dNE%uS6? z&d)8#Ni9iDiJClvv4~9ssIN$5vj7t_qZWh>761{VK;jmMO>TZlX-=vgBam0j0we^O G#FzmnC>w16 diff --git a/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0034_alter_point_date_completed_and_more.cpython-310.pyc index dedaf26ff94dff4e5363b4efeab4210ff42f5346..7ac6789f8bfff029dae6d0cc0aa2da804f991f42 100644 GIT binary patch delta 133 zcmaFE_J)l+pO=@50SH)MdTivDVPuOkH!v_Zo_v5wY_c<>3S-pd3`TFoD87`$lGOO} z{G#m4y!8CMD87=++|>Bw{M>?^)RNScsL59tOV~t##uSN8_G9{@1!02uAVLgC+~Tmw V%}*)KNws4H@`_o2gaDHmGXR#1A(sFE delta 133 zcmaFE_J)l+pO=@50SKgnoi=jIFtXh;H!v_Zo_v5wY_c<>3gfNG8I0bFxA;;LOH$*@ z^NX@G^V0M4Zt<05=BCCc=jRsWq?V+n+?srav4l+uXiSmRWIv`aS`a3f4pq(pkY6M=c|YTEEeI3L2NB{x;ueQZZhlH> RPO2RvkXOtCBm|hmm;tu2N6=jG*M00P#R9viti7#X7`i!dHy69$SD32(l`$jPV$VS@!ggb0wh#bJ}1 UpHiBWYR3rV6|(>d9wsqn0Bcu2N6=jG*M00QY?r;XekjEuJ?i!dHy69I}8iEO^Z$jPV$VS@!ggeZ`>#bJ}1 UpHiBWYR3rV6|(>d9wsqn0B2YZ4*&oF diff --git a/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0043_businesstype.cpython-310.pyc index 97211b7400e436bb894e48a129616c08ea9c287e..fa571661e963aa75bf8ef9c44598655aa5a419e1 100644 GIT binary patch delta 62 zcmeyu`h}G{pO=@50SH)MdQ9Yg#CU7syQz$PlUo?;*`$D?MN*SFnGOm-m|#ALke+;t GNeTcHtPec^ delta 62 zcmeyu`h}G{pO=@50SKgnohEWWVvL&jZYm@1q4frh@_yCYTQ*q$b~D Gk^%tb2@Ws- diff --git a/osinaweb/osinacore/migrations/__pycache__/0044_remove_business_business_type.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0044_remove_business_business_type.cpython-310.pyc index 60db062f9a646e6a28e16a0eb5228284ba91b427..c663726ff03e0e81a4396d0629144e23651689ee 100644 GIT binary patch delta 78 zcmX@da*l;NpO=@50SH)MdQ9Zr!WcF2z*IJVAis!zax~*fEeI3L2N425;ueQZZhlH> RPO2RvkXOtCBzTy_m;t+U50(G` delta 78 zcmX@da*l;NpO=@50SKgnohEW`VZ1f*z*IH?Aiqdpax~*fEeI3L2N8lm;ueQZZhlH> RPO2RvkXOtCBzTy_m;tx`50(G` diff --git a/osinaweb/osinacore/migrations/__pycache__/0045_business_type.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0045_business_type.cpython-310.pyc index 0af638a8ec713e9d2586e7df7bb0502b84a8ff91..b6766e10ad25b0d2f559c6ed7fb6b6d622ae626a 100644 GIT binary patch delta 67 zcmZo;Yh&Zi=jG*M00P#R9uv7AGTz$wmV=Q^8YoaCJ^44|RVgtLlLgF2C1fVQVv+#> D3B(R` delta 67 zcmZo;Yh&Zi=jG*M00QY?r-|GT8KXA7F Ll~97BC-`kePgkNd^F2 CKM)K6 delta 66 zcmeyt`h%4_pO=@50SKgnohEWWWQ>~l_BWdpkY6M<`5ogGDNzuU1%KpO=@50SH)MdQ9a0#&~No6XO>)F`z(^*yKNq{{%KpO=@50SKgnohEXBV~m>2#Q23x6ev(6I{6Rde*p*+%m)!-lew9t0Bnm3 A!vFvP diff --git a/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0058_remove_point_total_time_hours_and_more.cpython-310.pyc index fbe196a78ac0524fcaf05c45ce55c151dbab6283..4f184c34e480241999e4e62e33cd6c5b6a4b4e57 100644 GIT binary patch delta 78 zcmcc2dYP3wpO=@50SH)MdQ9X#!+2}rjhAdfKz@;3{A4CWPiCY{tx%nxj SIjMGxKwdEmklj delta 78 zcmcc2dYP3wpO=@50SKgnohEXhVT_u1<0YFQkY6M?`8eYvEeI3L2N6O*;ueQZZhlH> RPO2RvkXOtCBzTy_m;ux$5HSD% diff --git a/osinaweb/osinacore/migrations/__pycache__/0059_alter_task_requirement.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0059_alter_task_requirement.cpython-310.pyc index 84a0854cb4e992cf032a091bbf44f0a983672344..24b0f3b9fe554fb3d7955dfe41b25ef2195a8fae 100644 GIT binary patch delta 20 acmZ3&wuFs4pO=@50SH)MdTivDWCj2%X9NKN delta 20 acmZ3&wuFs4pO=@50SKgnoi=hyG6Mi9Ujusp diff --git a/osinaweb/osinacore/migrations/__pycache__/0060_pointactivity_total_time.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0060_pointactivity_total_time.cpython-310.pyc index 8a13e1bf5aafef2fa166806daa56bb5d7ce6f0f0..dcd45e0dd0fd627bf7f8619ff081d99a2c569907 100644 GIT binary patch delta 20 acmbQkI){}zpO=@50SH)MdTivL$OHf^0t99N delta 20 acmbQkI){}zpO=@50SKgnoi=h$WC8#v`UBtq diff --git a/osinaweb/osinacore/migrations/__pycache__/0061_alter_task_end_date_alter_task_start_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0061_alter_task_end_date_alter_task_start_date.cpython-310.pyc index 453dcff2e2582b009c32eda0b7212307bbe97bc8..36e51a6f19b31d63294002b34487d9aa2dfb8754 100644 GIT binary patch delta 20 acmX@gdX$wrpO=@50SH)MdTiw0#RLE{Y6Rf` delta 20 acmX@gdX$wrpO=@50SKgnoi=jsVgdj!Vgy?N diff --git a/osinaweb/osinacore/migrations/__pycache__/0062_connection.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0062_connection.cpython-310.pyc index c85f8a47b2beb86538528645198ec15b8e94875b..de327c8dcb019708cbf49b6d7dd06c24291ddc62 100644 GIT binary patch delta 91 zcmdnSv5kW}pO=@50SH)MdTivjWMsTG*_E+RPyi^R$#jd|KP@dMGcUDBaPt#J4MsK{ apm34SWFh7^QtBWkE0~W;=uVbkkplq5*%KcC delta 91 zcmdnSv5kW}pO=@50SKgnoi=h?GBQR@c4h1npO=@50SH)MdTit_Vgdj<1_cKI delta 20 acmey%@|T4>pO=@50SKgnoi=h8F#!NJ{se&l diff --git a/osinaweb/osinacore/migrations/__pycache__/0064_reaction.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0064_reaction.cpython-310.pyc index cc637ff4bfd2ea241447e1dea0d760b1be186bc8..5a527c159ada926553bf6fb0ccf28bd25be51e3e 100644 GIT binary patch delta 20 acmeyz{*RqIpO=@50SH)MdTiwW%nSfKn+1^o delta 20 acmeyz{*RqIpO=@50SKgnoi=iRW(EK_lLZR^ diff --git a/osinaweb/osinacore/migrations/__pycache__/0065_alter_customerprofile_status.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0065_alter_customerprofile_status.cpython-310.pyc index 7203a0ca24710e21fd23142bf0647978fac0ae61..7a0cadf32be3d7c21df8d0764e3f26efdbff50a8 100644 GIT binary patch delta 126 zcmaFI`i_-5pO=@50SH)MdQ9ZL!WcF2fvGkJkgv&fi!->ixF9tzB{ijp6C%PDl3J9T znU`1s6awig;+X8fxSmZ4#FU!+mGQh5gbC(@2x%a3i^C>2KczG$)s7L!D`o)_0!(7e E05I$wng9R* delta 126 zcmaFI`i_-5pO=@50SKgnohEW$VZ1f*fvGkpkgv&fi!->ixF9tzB{ii8qy#9!6_Q$% zo0*qb0u#B00{vm GF=hZQiXEN+ diff --git a/osinaweb/osinacore/migrations/__pycache__/0066_remove_customerprofile_business_business_customer.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0066_remove_customerprofile_business_business_customer.cpython-310.pyc index 1a104ec1ef89875834e4df87adad3d0a8b423586..7668f9d0d9e991510f80871c3ffc824ab38d365d 100644 GIT binary patch delta 102 zcmaFI_KuA^pO=@50SH)MdQ9Yg%Xn+z&lzl-KzWsI8ma|Rm+kYB_(c{<}PHW?68X0tgHBcqu(h|K~P gKqX{>+*=$rx%nxjIjMGxKwdE$kPu+vU=(8p09gJKwEzGB diff --git a/osinaweb/osinacore/migrations/__pycache__/0067_customerprofile_confirmed.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0067_customerprofile_confirmed.cpython-310.pyc index 1e8fe87a7597aef02eb847a1779ac0f2545aa934..9f09e4aae2a80d37b9d8b6d049b9434e033b4e7e 100644 GIT binary patch delta 80 zcmX@idYF|vpO=@50SH)MdTittXJm|;tjxHCO%y0nBs%#l;~6ao6U+w@VnE^+hfQvN TN@-529V3ue%mO3?n8cU?o>UJQ delta 80 zcmX@idYF|vpO=@50SKgnoi=idGcw+qtjxHCO$;bfBsTdh;~6ao6U+w@;y~gShfQvN TN@-529V3ue%mO3?n8cU?no|!L diff --git a/osinaweb/osinacore/migrations/__pycache__/0068_remove_customerprofile_confirmed_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0068_remove_customerprofile_confirmed_and_more.cpython-310.pyc index 9197b95a2b6bb63f980c09ee19b8986248ccf411..d32d5420558daf3159247ed5ef8396e0d92ed958 100644 GIT binary patch delta 136 zcmcb@c7=^QpO=@50SH)MdQ9Ygz<6uo8w18$lVurAt$2WDyp+_GB0h)+S4e76Zf0I$2~db1C{)Bdxrfn+jT6M=ntX(@hD{E{l$-3v^h5x{ N1oJ_J{A4R;DFEAjA-n(p delta 136 zcmcb@c7=^QpO=@50SKgnohEWWV2qmh#(*(uvMi&i6-Zc<=@y$~a!F=cY7sYt%Nbl+ zT#%ZVlA2P)0}9pO=@50SH)MdTiu2WMqt*Y|FTik$3Wa#(W^@&t%6f0+cNh1rcJCXE5z# v(*iNIHit6{Gn%P@*eqZHR6-lby~SaZo1apelWNBZ~V!Mlogpz+@HF delta 121 zcmZ3$xqy>9pO=@50SKgnoi=hCGBVzpY|FTik#F*S#(W^@&t%6f3Y0Ap0}~V!MlogpyFB hzRAYSzu8PdDor<=u<$cVX@l6TU;$LZY;r8C8~|U0DZ>B& delta 163 zcmey(^_z=3pO=@50SKgnoi=h$Wn_%nypU0pk&$!qb|$SLX`qBA(=Yzu)S|M?g0IFMh&2_$ZD=NF{rrKZHEB$lM!;)HUNDm9sk hcqbb(|7J4*sWjPa!otrer3GTMf(1|s)5)={asbD$D6jwk diff --git a/osinaweb/osinacore/migrations/__pycache__/0072_ticketupdate_ticketreaction_ticketattachment.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0072_ticketupdate_ticketreaction_ticketattachment.cpython-310.pyc index 74138caf20046929fac5be15bd4f95f56e303834..df4cf6d4821064a3c6f7f3ea7787e0304c8343f9 100644 GIT binary patch delta 107 zcmbQrJ(Zg~pO=@50SH)MdTiu=%*Yru`90$@MuExGnDnKDfZ|2MKthx07E4}YZt5+z ow9M3;l;Wt(_nCYc+4Mm2dYcVdbQq=7L2OpA04kwBxtvuF0C(FL-~a#s delta 107 zcmbQrJ(Zg~pO=@50SKgnoi=hmW@NlI`90$@M#0I`nDnKDf#O9XKthx07E4}YZt5+z ow9M3;l;T^P?=$%@vKfHn4K^FH=rBrYg4nEJ0aU_payhFU0F34sYXATM diff --git a/osinaweb/osinacore/migrations/__pycache__/0073_alter_ticket_regarding.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0073_alter_ticket_regarding.cpython-310.pyc index fce9fa99d852321dc53ca424c19e9686d9a14901..799aa71053809d1d99ee54bea5168176c06745bd 100644 GIT binary patch delta 68 zcmey)`kj?KpO=@50SH)MdQ9ZL#CU7sy+lUN$qtO-j9il=7?-h00_BP%C$lh}6o4?n Md=Mcu`7V%>V!Z diff --git a/osinaweb/osinacore/migrations/__pycache__/0074_rename_dare_added_ticketupdate_date_added.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0074_rename_dare_added_ticketupdate_date_added.cpython-310.pyc index 4267b323bbd3035c71576416614b3384848a2c99..6a666d60534bf1df8355a6dbce2a26ac5c518983 100644 GIT binary patch delta 107 zcmZo>ZD!@p=jG*M00P#R9uv8@$wf&U7?>N!C+3u-7R8rjCTFLX#22NeCl;k-=A}nX uyg!#s0I0Y~U~&`Vbu9=J%m)#IK;jmMO>TZlX-=vgBam0j0wj2t#FzminHnwt delta 107 zcmZo>ZD!@p=jG*M00QY?r-|I#N!C+3u-7R8rjCTFLX#22NeCl;k-=B3}7 vcz-UN5KwWE(Bvk@>sk;dm=7X^fy6Bio80`A(wtN~Mj)@41xWBPi7^8JJ!KlS diff --git a/osinaweb/osinacore/migrations/__pycache__/0075_remove_ticketattachment_ticket_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0075_remove_ticketattachment_ticket_and_more.cpython-310.pyc index e7afd02fddbde328f7f06903db5e27f373793105..3fa3bc76932ad3a4037ceb570d95e45c774a48fc 100644 GIT binary patch delta 93 zcmeBV?_}rB=jG*M00P#R9viuN7#VL(mSC&_l2aL##5sWCw**2mle1Gx97{?PlQVKt i^Ga?_KF8R=CJvM<65kxc#LXxGVS@!ggv8{0W+?z+widPk delta 93 zcmeBV?_}rB=jG*M00QY?r;Xe^jEqr}B^Yaf*pLkWogP3z&r%rF21T O7O(&+VLW*biwpqXxgksd delta 144 zcmdnNxr38CpO=@50SKgnoi=itGcra^c4mxW;{b{jaZX;!m})8tWNI?q;&jf>EyzhN zNlhsdgNU#Pq~@h$=A{>j!&D^ZC8y@(098m#wrBETto~2=jG*M00P#R9uv7QFh)(hlW58gEyzhNNlhu@fQYaMq~@h$ z=A{>L!c-*YC8y@(099~JE@GU|CIJ*Ll9(*cbXE((1oJ_JB#^kpVUwGmQks)$#|Y#V Lvj7PJCNX9JI2a#r delta 136 zcmeBU>to~2=jG*M00QY?r-|Gb7;jCylW58TEyzhNNlhu@gov;Qq~@h$ z=A{>bw18D4<|U`*d0VXkK05qE)bN~PV diff --git a/osinaweb/osinacore/migrations/__pycache__/0079_alter_project_end_date_alter_project_start_date.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0079_alter_project_end_date_alter_project_start_date.cpython-310.pyc index fd81cfd12bec209596792a31ac832590e636353d..bc4bf2c3a4e343e23eb5675057c4d8718d68c2c3 100644 GIT binary patch delta 20 acmdnbx}TLhpO=@50SH)MdTiw0!UO;@dIZk^ delta 20 acmdnbx}TLhpO=@50SKgnoi=iBVFCayas){L diff --git a/osinaweb/osinacore/migrations/__pycache__/0080_project_logo.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0080_project_logo.cpython-310.pyc index c1e8c3318cc3cfa18a818045112c91cd44a5d1d1..6d9204e4eb6e2a738da289224f0ef2b2b9fe4f6c 100644 GIT binary patch delta 56 zcmZ3j9e>kY6M=`2gd70SFV!2NB|v`tf^1=jG*M00P#R9uv7AGe&KE&%?+j0~9Ednas#^SxOwlWC8P03E9c-m}CIe C2MrVe delta 67 zcmeBT>tf^1=jG*M0D}7=P7}EwGv3 -

{{ticket.last_update_date_added}}

+

{{ticket.ticketupdate_set.last.date_added}}

-

{{ticket.last_update_added_by}}

+

{{ticket.ticketupdate_set.last.added_by.first_name}}

diff --git a/osinaweb/osinacore/templates/listing_pages/tickets.html b/osinaweb/osinacore/templates/listing_pages/tickets.html index 8b76e4ba..c5807953 100644 --- a/osinaweb/osinacore/templates/listing_pages/tickets.html +++ b/osinaweb/osinacore/templates/listing_pages/tickets.html @@ -86,11 +86,11 @@ -

{{ticket.last_update_date_added}}

+

{{ticket.ticketupdate_set.all.last.date_added}}

-

{{ticket.last_update_added_by}}

+

{{ticket.ticketupdate_set.all.last.added_by.first_name}}

@@ -198,27 +198,31 @@ -

{{ticket.last_update_date_added}}

+

{{ticket.ticketupdate_set.all.last.date_added}}

-

{{ticket.last_update_added_by}}

+

{{ticket.ticketupdate_set.all.last.added_by.first_name}}

- -
- -
+
+ + + + -
- -
+ + +
-
- +
+ + +
diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index e38cf624..d3bfcad7 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -348,42 +348,51 @@ def my_tasks(request, *args, **kwargs): @staff_login_required def tickets(request, *args, **kwargs): if request.user.is_superuser: - open_tickets = Ticket.objects.filter(status__in=['Open', 'Working On']) - closed_tickets = Ticket.objects.filter(status__in=['Closed']) + all_tickets = Ticket.objects.all() + all_tickets_with_update_date = all_tickets.annotate( + latest_update_date=Max('ticketupdate__date_added')) + all_tickets_ordered = all_tickets_with_update_date.order_by('-latest_update_date') + open_tickets = [] + closed_tickets = [] + for ticket in all_tickets_ordered: + last_status = ticket.ticketstatus_set.last() + if last_status: + last_status = last_status.status + if last_status == 'Closed': + closed_tickets.append(ticket) + else: + open_tickets.append(ticket) + else: + # If no status is found, assume it's open + open_tickets.append(ticket) else: - open_tickets = Ticket.objects.filter(status__in=['Open', 'Working On'], department=request.user.staffprofile.staff_position.department) - closed_tickets = Ticket.objects.filter(status__in=['Closed'], department=request.user.staffprofile.staff_position.department) + all_tickets = Ticket.objects.filter(departments__in=request.user.staffprofile.staffposition.department) + all_tickets_with_update_date = all_tickets.annotate( + latest_update_date=Max('ticketupdate__date_added')) + all_tickets_ordered = all_tickets_with_update_date.order_by('-latest_update_date') + open_tickets = [] + closed_tickets = [] + for ticket in all_tickets_ordered: + last_status = ticket.ticketstatus_set.last() + if last_status: + last_status = last_status.status + if last_status == 'Closed': + closed_tickets.append(ticket) + else: + open_tickets.append(ticket) + else: + # If no status is found, assume it's open + open_tickets.append(ticket) for ticket in open_tickets: unread_updates_count = 0 - last_update = ticket.ticketupdate_set.exclude(added_by=request.user).order_by('-date_added').first() - if last_update: - last_update_added_by = last_update.added_by.first_name - last_update_date_added = last_update.date_added - else: - last_update_added_by = None - last_update_date_added = None - for ticket_update in ticket.ticketupdate_set.exclude(added_by=request.user): if not TicketRead.objects.filter(ticket_update=ticket_update, user=request.user, read=True).exists(): unread_updates_count += 1 ticket.unread_updates_count = unread_updates_count - ticket.last_update_added_by = last_update_added_by - ticket.last_update_date_added = last_update_date_added - - for ticket in closed_tickets: - last_update = ticket.ticketupdate_set.order_by('-date_added').first() - if last_update: - last_update_added_by = last_update.added_by - last_update_date_added = last_update.date_added - else: - last_update_added_by = None - last_update_date_added = None - ticket.last_update_added_by = last_update_added_by - ticket.last_update_date_added = last_update_date_added - + context = { 'open_tickets': open_tickets, 'closed_tickets': closed_tickets diff --git a/osinaweb/osinaweb/__pycache__/__init__.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/__init__.cpython-310.pyc index eed5eb07cba8dab3f790dfab787c8173abef6ca7..8cedfe09e4c2726a9eee7ad6d886e957516bb556 100644 GIT binary patch delta 19 ZcmdnbxSx?bpO=@50SH)MdQ9Zr0st$+1f>7~ delta 19 ZcmdnbxSx?bpO=@50SKgnohEW`0RSmM1RnqZ diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc index bafee41c78c20357ff7ce41f8e2fe6b0ae5af20a..6734c538fe47a47d1c0d88b10b347000e2a1dc4f 100644 GIT binary patch delta 20 acmX>qepH-0pO=@50SH)MdTiw0#SH*7`vndF delta 20 acmX>qepH-0pO=@50SKgnoi=js;syXQ^8|;#?w diff --git a/osinaweb/osinaweb/__pycache__/wsgi.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/wsgi.cpython-310.pyc index e792eddb059e544e8c27e37e97f751f5ea52bdbc..a72140d07c0ff31d8af19d16a22cf2f101c3aea5 100644 GIT binary patch delta 20 acmcb@a)pIEpO=@50SH)MdTiwOWC8#)o&<~l delta 20 acmcb@a)pIEpO=@50SKgnoi=iNG64WEmIMX>