Skip to content

Commit

Permalink
Enhance TYFCB, CEU, Meetings, and Visitor Management with Comprehensi…
Browse files Browse the repository at this point in the history
…ve Features

- Add edit, delete, and list functionality for TYFCB entries
- Implement pagination and advanced filtering for TYFCB list
- Enhance CEU management with edit and delete options
- Improve meetings list with edit and delete capabilities
- Update visitor registration with list, edit, and delete features
- Add dynamic form handling and user experience improvements
- Implement search and filter functionality across multiple views
  • Loading branch information
NagiPragalathan committed Feb 10, 2025
1 parent 8bb6901 commit 9fa7d7b
Show file tree
Hide file tree
Showing 26 changed files with 1,160 additions and 258 deletions.
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"svg.preview.background": "black"
"svg.preview.background": "black",
"cSpell.words": [
"perticular"
]
}
Binary file modified QuizApp/__pycache__/urls.cpython-312.pyc
Binary file not shown.
22 changes: 17 additions & 5 deletions QuizApp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,18 @@

account_settings = [
path('edit_or_add_account_settings', edit_or_add_account_settings, name='edit_or_add_account_settings'),
path('edit_or_add_account_settings/<str:username>', edit_or_add_account_settings, name='edit_or_add_account_settings'),
path('edit_or_add_account_settings/<str:username>/<int:dashboard>', edit_or_add_account_settings, name='edit_or_add_account_settings'),
]

tyfcb =[


tyfcb = [
path('tyfcb/', tyfcb_list, name='tyfcb_list'),
path('tyfcb_review/', tyfcb_list, name='tyfcb_review'),
path('tyfcb/new/', tyfcb_create, name='tyfcb_create'),
path('tyfcb/<uuid:pk>/', tyfcb_detail, name='tyfcb_detail'),
path('tyfcb/<uuid:pk>/edit/', tyfcb_edit, name='tyfcb_edit'),
path('tyfcb/<uuid:pk>/delete/', tyfcb_delete, name='tyfcb_delete'),
]

referrals = [
Expand All @@ -142,11 +146,15 @@
path('meetings/new/', create_meeting, name='create_meeting'),
path('meetings/', meeting_list, name='meeting_list'),
path('meetings/one-to-one/', one_to_one_list, name='one_to_one_list'),
path('meetings/<int:meeting_id>/edit/', edit_meeting, name='edit_meeting'),
path('meetings/<int:meeting_id>/delete/', delete_meeting, name='delete_meeting'),
]

ceu =[
ceu = [
path('ceus/create/', create_ceu, name='create_ceu'),
path('ceus/review/', review_ceu, name='review_ceu'),
path('ceus/<int:ceu_id>/edit/', edit_ceu, name='edit_ceu'),
path('ceus/<int:ceu_id>/delete/', delete_ceu, name='delete_ceu'),
]

weeklyslips =[
Expand All @@ -170,14 +178,18 @@
]

visitor = [
path('register/', register_visitor, name='register_visitor'),
# path('register/', register_visitor, name='register_visitor'),
path('visitors/', visitor_registration_portal, name='visitor_registration_portal'),
path('visitors/register/', register_visitor, name='register_visitor'),
path('visitors/<int:visitor_id>/edit/', register_visitor, name='edit_visitor'),
path('visitors/<int:visitor_id>/delete/', delete_visitor, name='delete_visitor'),

path('subscription-expired/', subscription_expired, name='subscription_expired'),
]



Operations = [
path('visitor_registration_portal/', visitor_registration_portal, name='visitor_registration_portal'),
path('view_palms_summary/', view_palms_summary, name='view_palms_summary'),
path('view_chapter_goals/', view_chapter_goals, name='view_chapter_goals'),
path('email_my_chapter/', email_my_chapter, name='email_my_chapter'),
Expand Down
36 changes: 32 additions & 4 deletions base/views/AccountSettings.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
from django.shortcuts import get_object_or_404, redirect, render
from base.models import AccountSettings
from django.http import HttpResponse
from django.contrib.auth.models import User

def edit_or_add_account_settings(request):
def is_admin_user(user):
return user.is_superuser


def edit_or_add_account_settings(request, username=None, dashboard=0):
context = {}
if username != None:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = request.user
else:
user = request.user


is_admin = is_admin_user(request.user)
if request.method == 'POST':

# Retrieve all values from the form
Expand All @@ -21,7 +36,7 @@ def edit_or_add_account_settings(request):
forward_recommendation_requests = request.POST.get('forward_recommendation_requests', False) == 'on'
country_settings_for_group_notifications = request.POST.get('country_settings_for_group_notifications', 'Default')

account_settings, created = AccountSettings.objects.get_or_create(user=request.user)
account_settings, created = AccountSettings.objects.get_or_create(user=user)

# Update or set values
account_settings.bio_visibility = bio_visibility
Expand All @@ -39,11 +54,24 @@ def edit_or_add_account_settings(request):
account_settings.country_settings_for_group_notifications = country_settings_for_group_notifications

account_settings.save()

return redirect('edit_or_add_account_settings') # Redirect to a new URL
if dashboard == 0:
return redirect('edit_or_add_account_settings', username=username, dashboard=dashboard) # Redirect to a new URL
else:
return redirect('edit_or_add_account_settings') # Redirect to a new URL
else:
# If not a POST request, try to retrieve existing settings to pre-fill the form

account_settings = AccountSettings.objects.filter(user=request.user).first()
if account_settings:
context['account_settings'] = account_settings
is_admin = is_admin_user(request.user)
context['is_admin'] = is_admin
context['base_template'] = 'dummy_base_dont_remove_this_file.html' if is_admin else 'base.html'
if dashboard != 0:
context['base_template'] = 'dummy_base_dont_remove_this_file.html'
print(context)
context['base_template'] = 'dummy_base_dont_remove_this_file.html' if is_admin else 'base.html'
if dashboard != 0:
context['base_template'] = 'dummy_base_dont_remove_this_file.html'

return render(request, 'Settings/edit_or_add_account_settings.html', context)
Binary file modified base/views/__pycache__/common.cpython-312.pyc
Binary file not shown.
28 changes: 26 additions & 2 deletions base/views/ceu.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.shortcuts import render, redirect
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from base.models import ChapterEducationUnit, User
from django.utils.timezone import now

Expand All @@ -24,5 +25,28 @@ def create_ceu(request):

@login_required
def review_ceu(request):
ceus = ChapterEducationUnit.objects.filter(user=request.user)
ceus = ChapterEducationUnit.objects.filter(user=request.user).order_by('-date')
return render(request, 'ceus/review_ceu.html', {'ceus': ceus})

@login_required
def edit_ceu(request, ceu_id):
ceu = get_object_or_404(ChapterEducationUnit, id=ceu_id, user=request.user)

if request.method == 'POST':
ceu.course_title = request.POST.get('course_title')
ceu.credits_per_course = request.POST.get('credits_per_course')
ceu.qty_earned = request.POST.get('qty_earned')
ceu.save()
messages.success(request, 'CEU updated successfully!')
return redirect('review_ceu')

return render(request, 'ceus/edit_ceu.html', {'ceu': ceu})

@login_required
def delete_ceu(request, ceu_id):
ceu = get_object_or_404(ChapterEducationUnit, id=ceu_id, user=request.user)
if request.method == 'POST':
ceu.delete()
messages.success(request, 'CEU deleted successfully!')
return redirect('review_ceu')
return render(request, 'ceus/delete_ceu.html', {'ceu': ceu})
18 changes: 16 additions & 2 deletions base/views/common.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django.shortcuts import render
from django.shortcuts import render, redirect
from base.models import CityData, Group, Connection, MainProfile, oneToOneMessage, Meeting, UserProfile, ChapterEducationUnit, TYFCB, ReferralSlip, Visitor, Bio, Address
from base.models import CityData, Group, Connection, MainProfile, oneToOneMessage, Meeting, UserProfile, ChapterEducationUnit, TYFCB, ReferralSlip, Visitor, Bio, Address, ContactDetails
from base.form.forms import CityDataForm
from django.contrib.auth.decorators import login_required
from django.db.models import Q
Expand Down Expand Up @@ -47,9 +47,13 @@ def calculate_ceu_counts(user):

def index(request):
if request.user.is_authenticated:
return redirect('dashboard')
if request.user.is_staff or request.user.is_superuser:
return redirect('profile-list')
else:
return redirect('dashboard')
return render(request, "index.html")


@login_required(login_url='/login/')
def dashboard(request):
user = request.user
Expand Down Expand Up @@ -264,9 +268,16 @@ def common_data(request):
main_profile = 1
except MainProfile.DoesNotExist:
main_profile = 0

try:
contact = ContactDetails.objects.get(user=current_user)
contact = 1
except ContactDetails.DoesNotExist:
contact = 0

try:
bio = Bio.objects.get(user=current_user)

bio = 1
except Bio.DoesNotExist:
bio = 0
Expand All @@ -285,6 +296,7 @@ def common_data(request):
'usr_img':usr_img,
'main_profile': main_profile,
'bio': bio,
'contact': contact,
'is_admin': 1 if is_admin else 0
})
else:
Expand All @@ -298,7 +310,9 @@ def common_data(request):
'usr_img': 'none',
'main_profile': None,
'bio': None,
'contact': None,
'is_admin': is_admin

})

return context
38 changes: 38 additions & 0 deletions base/views/onetoone.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,42 @@ def one_to_one_list(request):
meetings = Meeting.objects.filter(Q(met_with=request.user) | Q(invited_by=request.user)).distinct()
return render(request, 'oneslip/one_to_one_list.html', {'meetings': meetings})

@login_required
def edit_meeting(request, meeting_id):
meeting = Meeting.objects.get(id=meeting_id)

# Check if user has permission to edit
if meeting.invited_by != request.user:
return redirect('meeting_list')

if request.method == 'POST':
met_with_id = request.POST.get('met_with')
location = request.POST.get('location')
topics_of_conversation = request.POST.get('topics_of_conversation')
date = request.POST.get('date')

meeting.met_with = User.objects.get(id=met_with_id)
meeting.location = location
meeting.topics_of_conversation = topics_of_conversation
meeting.date = date
meeting.save()

return redirect('meeting_list')

users = User.objects.all()
return render(request, 'oneslip/edit_meeting.html', {
'meeting': meeting,
'users': users
})

@login_required
def delete_meeting(request, meeting_id):
meeting = Meeting.objects.get(id=meeting_id)

# Check if user has permission to delete
if meeting.invited_by == request.user:
meeting.delete()

return redirect('meeting_list')


Loading

0 comments on commit 9fa7d7b

Please sign in to comment.