diff --git a/osinaweb/customercore/__pycache__/urls.cpython-310.pyc b/osinaweb/customercore/__pycache__/urls.cpython-310.pyc index 0c9882ff..21d7fc83 100644 Binary files a/osinaweb/customercore/__pycache__/urls.cpython-310.pyc and b/osinaweb/customercore/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/customercore/__pycache__/views.cpython-310.pyc b/osinaweb/customercore/__pycache__/views.cpython-310.pyc index f8675f8c..8ad04fad 100644 Binary files a/osinaweb/customercore/__pycache__/views.cpython-310.pyc and b/osinaweb/customercore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc b/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc index 6d6659ad..4bfccda0 100644 Binary files a/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc and b/osinaweb/customercore/payment/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 81e88f1d..47c8fa6b 100644 Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ diff --git a/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc b/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc index 4843b162..ef6eb67e 100644 Binary files a/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/admin.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc b/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc index 2a36a535..7ebf5704 100644 Binary files a/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/custom_context.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc index bd2736db..d601880e 100644 Binary files a/osinaweb/osinacore/__pycache__/models.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/models.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc index 16710dd7..c9075a3b 100644 Binary files a/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc index 62c3c292..3fa16334 100644 Binary files a/osinaweb/osinacore/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc index 8712c11c..914e2655 100644 Binary files a/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinacore/add/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc index bd0379ac..c62aa33f 100644 Binary files a/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/add/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/add/urls.py b/osinaweb/osinacore/add/urls.py index 1b80bbb5..cc4a74e7 100644 --- a/osinaweb/osinacore/add/urls.py +++ b/osinaweb/osinacore/add/urls.py @@ -29,7 +29,7 @@ urlpatterns = [ path('dailyreport/', views.add_daily_report, name='adddailyreport'), path('department/', views.add_department_modal, name='adddepartmentmodal'), path('projecttype/', views.add_projecttype_modal, name='addprojecttypemodal'), - path('staffposition/', views.add_staffposition_modal, name='addstaffpositionmodal'), + path('jobposition/', views.add_jobposition_modal, name='addjobpositionmodal'), path('businesstype/', views.add_businesstype_modal, name='addbusinesstypemodal'), path('reference/', views.add_reference_modal, name='addreferencemodal'), path('tag/', views.add_tag_modal, name='addtagmodal'), diff --git a/osinaweb/osinacore/add/views.py b/osinaweb/osinacore/add/views.py index e8f0e7ff..4f90aa72 100644 --- a/osinaweb/osinacore/add/views.py +++ b/osinaweb/osinacore/add/views.py @@ -550,25 +550,25 @@ def add_projecttype_modal(request, *args, **kwargs): @staff_login_required -def add_staffposition_modal(request): +def add_jobposition_modal(request): departments = Department.objects.all().order_by('name') if request.method == 'POST': name = request.POST.get('name') - staffposition = StaffPosition( + jobposition = JobPosition( name=name, department=get_object_or_404( Department, id=request.POST.get('department')) ) - staffposition.save() + jobposition.save() # Reload the parent page return HttpResponse('') context = { 'departments': departments, } - return render(request, 'add_templates/add-staffposition-modal.html', context) + return render(request, 'add_templates/add-jobposition-modal.html', context) @staff_login_required diff --git a/osinaweb/osinacore/admin.py b/osinaweb/osinacore/admin.py index 86697b32..4fea3d9f 100644 --- a/osinaweb/osinacore/admin.py +++ b/osinaweb/osinacore/admin.py @@ -49,5 +49,6 @@ admin.site.register(BusinessType) admin.site.register(PointActivity) admin.site.register(Connection) admin.site.register(Reaction) +admin.site.register(JobPosition) admin.site.register(StaffPosition) diff --git a/osinaweb/osinacore/edit/__pycache__/urls.cpython-310.pyc b/osinaweb/osinacore/edit/__pycache__/urls.cpython-310.pyc index 4247db50..23440bff 100644 Binary files a/osinaweb/osinacore/edit/__pycache__/urls.cpython-310.pyc and b/osinaweb/osinacore/edit/__pycache__/urls.cpython-310.pyc differ diff --git a/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc index 60665d17..bc67ec38 100644 Binary files a/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc and b/osinaweb/osinacore/edit/__pycache__/views.cpython-310.pyc differ diff --git a/osinaweb/osinacore/edit/urls.py b/osinaweb/osinacore/edit/urls.py index bc21f25f..0ddd9542 100644 --- a/osinaweb/osinacore/edit/urls.py +++ b/osinaweb/osinacore/edit/urls.py @@ -16,7 +16,7 @@ urlpatterns = [ path('epic/', views.edit_epic, name='editepic'), path('department//', views.edit_department, name='editdepartment'), path('projecttype//', views.edit_project_type, name='editprojecttype'), - path('staffposition//', views.edit_staff_position, name='editstaffposition'), + path('jobposition//', views.edit_job_position, name='editjobposition'), path('businesstype//', views.edit_business_type, name='editbusinesstype'), path('reference//', views.edit_reference, name='editreference'), path('tag//', views.edit_tag, name='edittag'), diff --git a/osinaweb/osinacore/edit/views.py b/osinaweb/osinacore/edit/views.py index 70d9bd88..b8321d68 100644 --- a/osinaweb/osinacore/edit/views.py +++ b/osinaweb/osinacore/edit/views.py @@ -363,19 +363,19 @@ def edit_project_type(request, projecttype_id): @staff_login_required -def edit_staff_position(request, staffposition_id): - staffposition = get_object_or_404(StaffPosition, id=staffposition_id) +def edit_job_position(request, jobposition_id): + jobposition = get_object_or_404(JobPosition, id=jobposition_id) departments = Department.objects.all().order_by('name') if request.method == 'POST': - staffposition.name = request.POST.get('name') - staffposition.department = get_object_or_404(Department, id=request.POST.get('department')) - staffposition.save() + jobposition.name = request.POST.get('name') + jobposition.department = get_object_or_404(Department, id=request.POST.get('department')) + jobposition.save() - return redirect('staffpositions') + return redirect('jobpositions') - return render(request, 'edit_templates/edit-staff-position.html', {'staffposition': staffposition,'departments': departments}) + return render(request, 'edit_templates/edit-job-position.html', {'jobposition': jobposition,'departments': departments}) diff --git a/osinaweb/osinacore/migrations/0083_rename_staffposition_jobposition_and_more.py b/osinaweb/osinacore/migrations/0083_rename_staffposition_jobposition_and_more.py new file mode 100644 index 00000000..c1fd3636 --- /dev/null +++ b/osinaweb/osinacore/migrations/0083_rename_staffposition_jobposition_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.5 on 2024-06-20 12:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0082_pinnedproject'), + ] + + operations = [ + migrations.RenameModel( + old_name='StaffPosition', + new_name='JobPosition', + ), + migrations.RemoveField( + model_name='staffprofile', + name='staff_position', + ), + ] diff --git a/osinaweb/osinacore/migrations/0084_staffposition.py b/osinaweb/osinacore/migrations/0084_staffposition.py new file mode 100644 index 00000000..cd077ba6 --- /dev/null +++ b/osinaweb/osinacore/migrations/0084_staffposition.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.5 on 2024-06-20 12:30 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('osinacore', '0083_rename_staffposition_jobposition_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='StaffPosition', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateField()), + ('position', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='osinacore.jobposition')), + ('staff', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='osinacore.staffprofile')), + ], + ), + ] diff --git a/osinaweb/osinacore/migrations/__pycache__/0083_rename_staffposition_jobposition_and_more.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0083_rename_staffposition_jobposition_and_more.cpython-310.pyc new file mode 100644 index 00000000..de4d14c4 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0083_rename_staffposition_jobposition_and_more.cpython-310.pyc differ diff --git a/osinaweb/osinacore/migrations/__pycache__/0084_staffposition.cpython-310.pyc b/osinaweb/osinacore/migrations/__pycache__/0084_staffposition.cpython-310.pyc new file mode 100644 index 00000000..12d92ce0 Binary files /dev/null and b/osinaweb/osinacore/migrations/__pycache__/0084_staffposition.cpython-310.pyc differ diff --git a/osinaweb/osinacore/models.py b/osinaweb/osinacore/models.py index 76e3d041..e21b96ac 100644 --- a/osinaweb/osinacore/models.py +++ b/osinaweb/osinacore/models.py @@ -7,9 +7,6 @@ from django.utils import timezone from django.db.models import Sum, F from datetime import timedelta - - - # Create your models here. class Reference(models.Model): @@ -19,8 +16,6 @@ class Reference(models.Model): return self.name - - class Tag(models.Model): name = models.CharField(max_length=50) def __str__(self): @@ -33,8 +28,6 @@ class BusinessType(models.Model): return self.name - - class CustomerProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True) mobile_number = models.CharField(max_length=50, blank=True) @@ -96,9 +89,14 @@ class Department(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name + def get_staff(self): + # Retrieve all staff profiles associated with positions in this department + staff_profiles = StaffProfile.objects.filter(staffposition__position__department=self) + return staff_profiles -class StaffPosition(models.Model): + +class JobPosition(models.Model): name = models.CharField(max_length=100) department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True) def __str__(self): @@ -111,7 +109,6 @@ class StaffProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) image = models.ImageField(upload_to='uploaded_images', null=True, blank=True) mobile_number = models.CharField(max_length=50) - staff_position = models.ForeignKey(StaffPosition, on_delete=models.SET_NULL, null=True, blank=True) intern = models.BooleanField(default=False) active = models.BooleanField(default=True) staff_id = models.CharField(max_length=20, null=True, blank=True) # Allow null and blank for initial creation @@ -129,6 +126,12 @@ class StaffProfile(models.Model): +class StaffPosition(models.Model): + staff = models.ForeignKey(StaffProfile, on_delete=models.CASCADE) + position = models.ForeignKey(JobPosition, null=True, on_delete=models.SET_NULL) + date = models.DateField() + + class ProjectType(models.Model): name = models.CharField(max_length=50) department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True) @@ -372,7 +375,6 @@ class Reaction(models.Model): - class DailyReport(models.Model): text = models.TextField(blank=True) date = models.CharField(max_length=40) diff --git a/osinaweb/osinacore/templates/add-edit-main.html b/osinaweb/osinacore/templates/add-edit-main.html index 4d87ebe3..0e8babdc 100644 --- a/osinaweb/osinacore/templates/add-edit-main.html +++ b/osinaweb/osinacore/templates/add-edit-main.html @@ -373,10 +373,10 @@ - +
-

Staff Positions

+

Job Positions

@@ -683,10 +683,10 @@ - +
-

Staff Positions

+

Job Positions

diff --git a/osinaweb/osinacore/templates/add_templates/add-staffposition-modal.html b/osinaweb/osinacore/templates/add_templates/add-jobposition-modal.html similarity index 93% rename from osinaweb/osinacore/templates/add_templates/add-staffposition-modal.html rename to osinaweb/osinacore/templates/add_templates/add-jobposition-modal.html index 38dfa160..1faa4f37 100644 --- a/osinaweb/osinacore/templates/add_templates/add-staffposition-modal.html +++ b/osinaweb/osinacore/templates/add_templates/add-jobposition-modal.html @@ -13,9 +13,9 @@ -
+ {% csrf_token %} -

Add Staff Position

+

Add Job Position

- Edit Staff Position + Edit Job Position

- + {% csrf_token %}
- - Job Position: +
@@ -21,7 +21,7 @@
diff --git a/osinaweb/osinacore/templates/listing_pages/staff-positions.html b/osinaweb/osinacore/templates/listing_pages/job-positions.html similarity index 94% rename from osinaweb/osinacore/templates/listing_pages/staff-positions.html rename to osinaweb/osinacore/templates/listing_pages/job-positions.html index 6a5b4ebf..9a7c5680 100644 --- a/osinaweb/osinacore/templates/listing_pages/staff-positions.html +++ b/osinaweb/osinacore/templates/listing_pages/job-positions.html @@ -24,8 +24,8 @@
+ data-modal-url="{% url 'addjobpositionmodal' %}">Add + Job Position
@@ -51,7 +51,7 @@ - {% for position in staffpositions %} + {% for position in jobpositions %}

{{position.name}}

@@ -61,7 +61,7 @@
- +
diff --git a/osinaweb/osinacore/templates/main.html b/osinaweb/osinacore/templates/main.html index 169b0174..4de64ce0 100644 --- a/osinaweb/osinacore/templates/main.html +++ b/osinaweb/osinacore/templates/main.html @@ -421,10 +421,10 @@ - +
-

Staff Positions

+

Job Positions

@@ -746,10 +746,10 @@ - +
-

Staff Positions

+

Job Positions

diff --git a/osinaweb/osinacore/urls.py b/osinaweb/osinacore/urls.py index 50708936..df9afd3a 100644 --- a/osinaweb/osinacore/urls.py +++ b/osinaweb/osinacore/urls.py @@ -48,7 +48,7 @@ urlpatterns = [ path('dailyreports/', views.daily_reports, name='dailyreports'), path('departments/', views.departments, name='departments'), path('projecttypes/', views.project_types, name='projecttypes'), - path('staffpositions/', views.staff_positions, name='staffpositions'), + path('jobpositions/', views.job_positions, name='jobpositions'), path('businesstypes/', views.business_types, name='businesstypes'), path('references/', views.references, name='references'), path('tags/', views.tags, name='tags'), diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index e8674dfc..69f83e34 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -495,17 +495,17 @@ def project_types(request): @staff_login_required -def staff_positions(request): +def job_positions(request): - staffpositions = StaffPosition.objects.all().order_by('-id') + jobpositions = JobPosition.objects.all().order_by('-id') context = { - 'staffpositions' : staffpositions, + 'jobpositions' : jobpositions, } - return render(request, 'listing_pages/staff-positions.html', context) + return render(request, 'listing_pages/job-positions.html', context) @staff_login_required