diff --git a/donate/views.py b/donate/views.py
index 690de060c..9393a0bf6 100644
--- a/donate/views.py
+++ b/donate/views.py
@@ -108,32 +108,39 @@ def pay_now(request, purpose):
data = get_final_data(request, obj, purpose)
else:
messages.errors(request,'Invalid Form')
+ print(f"\033[93m pay_now \033[0m")
return render(request, 'payment_status.html', data)
@csrf_exempt
def form_valid(request, form, purpose):
"""
- If the form is valid, save the associated model.
+ This method saves the Payee & CdFossLanguages records.
+ Payee record is used to store payment information.
+ CdFossLanguages record stores mapping of user and foss which the user is eligible to download.
"""
+ print(f"\033[92m Form is valid \033[0m")
+ # Save Payee record
form_data = form.save(commit=False)
- form_data.reqId = CHANNEL_ID+str(display.value(datetime.now().strftime('%Y%m%d%H%M%S'))[0:20])
+ # form_data.reqId = CHANNEL_ID+str(display.value(datetime.now().strftime('%Y%m%d%H%M%S'))[0:20])
+ form_data.reqId = "abc"
form_data.user = request.user
form_data.status = 0
form_data.expiry = calculate_expiry()
form_data.purpose = purpose
form_data.save()
payee_obj = form_data
+ print(f"\033[97m Form data is saved \033[0m")
+ # Save CdFossLanguages record
+ # foss_ids = form.cleaned_data.get('foss_id')
+ # languages = form.cleaned_data.get('language_id')
+ # level_ids = form.cleaned_data.get('level_id')
+ fosses = form.cleaned_data.get('foss_id').split(',')
+ foss_languages = form.cleaned_data.get('language_id').split(',|')
+ levels = form.cleaned_data.get('level_id').split(',')
- foss_ids = form.cleaned_data.get('foss_id')
- languages = form.cleaned_data.get('language_id')
- level_ids = form.cleaned_data.get('level_id')
- fosses = foss_ids.split(',')
- foss_languages = languages.split(',|')
- levels = level_ids.split(',')
-
- payee_id = payee_obj.pk
+ # payee_id = payee_obj.pk
foss_level = 0
-
+
for i in range(len(fosses)):
foss_category = FossCategory.objects.get(pk=int(fosses[i]))
if int(levels[i]):
@@ -150,7 +157,7 @@ def form_valid(request, form, purpose):
if language not in ('','None'):
foss_language = Language.objects.get(pk=int(language))
cd_foss_langs = CdFossLanguages()
- cd_foss_langs.payment = Payee.objects.get(pk=payee_id)
+ cd_foss_langs.payment = Payee.objects.get(pk=payee_obj.pk)
cd_foss_langs.foss = foss_category
cd_foss_langs.lang = foss_language
if foss_level:
@@ -165,24 +172,31 @@ def form_invalid(request, form):
If the form is invalid, re-render the context data with the
data-filled form and errors.
"""
+
messages.warning(request, 'Invalid form payment request.')
return redirect('cdcontent:cdcontenthome')
@csrf_exempt
def controller(request, purpose):
+ print(f"\033[92m 1 Inside controller of initiate_payment \033[0m")
+ print(f"\033[92m purpose : {purpose} \033[0m")
form = PayeeForm(request.POST)
if request.method == 'POST':
if form.is_valid():
+ # form_valid function creates Payee & CdFossLanguages records.
+ # & returns Payee record
payee_obj_new = form_valid(request, form, purpose)
+ print(f"\033[95m FORM IS VALID \033[0m")
else:
form_invalid(request, form)
- if purpose != 'cdcontent':
- participant_form = reg_success(request, 'general')
+
+ if purpose != 'cdcontent': # purpose = event_id in case of ILW
+ participant_form = reg_success(request, 'general')
participant_form.payment_status = payee_obj_new
try :
participant_form.save()
- except :
+ except Exception as e:
return redirect('training:list_events', status='myevents')
data = get_final_data(request, payee_obj_new, purpose)
return render(request, 'payment_status.html', data)
@@ -202,6 +216,7 @@ def encrypted_data(request, obj, purpose):
request_id = obj.reqId
STdata = request_id + str(request.user.id) + str(user_name) + str(amount) + purpose + CHANNEL_ID + CHANNEL_KEY
s = display.value(str(STdata))
+ print(f"\033[92m Encrypted Data : {s} \033[0m")
return s
@@ -317,6 +332,17 @@ def validate(request):
context["validate"] = "fail"
return HttpResponse(json.dumps(context), content_type='application/json')
+# import requests
+# def temp(request):
+# template_name = 'reg_success.html'
+# name = request.POST.get('name')
+# email = request.POST.get('email')
+# phone = request.POST.get('phone')
+# event_obj = request.POST.get('event')
+# context = {
+# name = ''
+# }
+# return render(request, template_name, context)
def receipt(request):
response = HttpResponse(content_type='application/pdf')
diff --git a/events/filters.py b/events/filters.py
index eab832022..63e8115fd 100644
--- a/events/filters.py
+++ b/events/filters.py
@@ -336,7 +336,7 @@ class ViewEventFilter(django_filters.FilterSet):
event_start_date = django_filters.DateFromToRangeFilter()
event_end_date = django_filters.DateFromToRangeFilter()
event_type = django_filters.ChoiceFilter(choices=[('FDP', 'Paid FDP'), ('Workshop', 'Blended Mode Workshop'),('sdp', 'Student Training Programme'),('TPDP', 'Teachers Professional Development Program'
-), ('SSDP', 'School Students Development Program')])
+), ('SSDP', 'School Students Development Program'), ('PDP', 'Professional Development Program'), ('CDP', 'Community Development Program'),])
def __init__(self, *args, **kwargs):
diff --git a/events/templates/payment_status.html b/events/templates/payment_status.html
index 87c557579..6e4e50e38 100644
--- a/events/templates/payment_status.html
+++ b/events/templates/payment_status.html
@@ -58,9 +58,13 @@
{% block jsblock %}
{% endblock %}
diff --git a/training/admin.py b/training/admin.py
index 455c4a5f4..714cc58dd 100755
--- a/training/admin.py
+++ b/training/admin.py
@@ -1,6 +1,10 @@
from django.contrib import admin
# Register your models here.
-from .models import ILWFossMdlCourses
+from .models import ILWFossMdlCourses, Company
+
+class CompanyAdmin(admin.ModelAdmin):
+ pass
admin.site.register(ILWFossMdlCourses)
+admin.site.register(Company, CompanyAdmin)
diff --git a/training/forms.py b/training/forms.py
index 9be4f2560..47bfe95bd 100644
--- a/training/forms.py
+++ b/training/forms.py
@@ -33,6 +33,18 @@ class RegisterUser(forms.ModelForm):
required = False,
error_messages = {'required': 'component type is required.'},
)
+ # company = forms.ModelChoiceField(
+ # widget = forms.Select(attrs = {'class' : 'ac-state'}),
+ # queryset = Company.objects.order_by('name'),
+ # empty_label = "--- Select Company ---",
+ # help_text = ""
+ # )
+ # city = forms.ModelChoiceField(
+ # widget = forms.Select(attrs = {'class' : 'ac-city'}),
+ # queryset = City.objects.order_by('name'),
+ # empty_label = "--- Select City ---",
+ # help_text = ""
+ # )
foss_language = forms.ModelChoiceField(
queryset = Language.objects.order_by('name'),
required = False,
@@ -41,7 +53,7 @@ class RegisterUser(forms.ModelForm):
phone = forms.RegexField(regex=r'^\+?1?\d{8,15}$', error_messages = {'required': 'Enter valid phone number.'},)
class Meta(object):
model = Participant
- fields = ['name', 'email', 'state', 'gender', 'amount', 'foss_language']
+ fields = ['name', 'email', 'state', 'gender', 'amount', 'foss_language', 'company', 'city']
def __init__(self, *args, **kwargs):
super(RegisterUser, self).__init__(*args, **kwargs)
diff --git a/training/migrations/0012_auto_20240515_1424.py b/training/migrations/0012_auto_20240515_1424.py
new file mode 100644
index 000000000..bce7cb01d
--- /dev/null
+++ b/training/migrations/0012_auto_20240515_1424.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2024-05-15 08:54
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('events', '0047_testattendance_mdlgrade'),
+ ('training', '0011_auto_20230127_1859'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Company',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=250)),
+ ('created', models.DateTimeField(auto_now_add=True)),
+ ('updated', models.DateTimeField(auto_now=True)),
+ ('added_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'verbose_name_plural': 'Companies',
+ 'ordering': ['name'],
+ },
+ ),
+ migrations.AddField(
+ model_name='trainingevents',
+ name='city',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='events.City'),
+ ),
+ migrations.AlterField(
+ model_name='trainingevents',
+ name='event_type',
+ field=models.CharField(choices=[('', '-----'), ('FDP', 'Paid FDP'), ('Workshop', 'Blended Mode Workshop'), ('sdp', 'Student Training Programme'), ('TPDP', 'Teachers Professional Development Program'), ('SSDP', 'School Students Development Program'), ('PDP', 'Professional Development Program'), ('CDP', 'Community Development Program')], max_length=50),
+ ),
+ migrations.AddField(
+ model_name='trainingevents',
+ name='company',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='training.Company'),
+ ),
+ ]
diff --git a/training/migrations/0013_auto_20240516_0017.py b/training/migrations/0013_auto_20240516_0017.py
new file mode 100644
index 000000000..00db5a1d3
--- /dev/null
+++ b/training/migrations/0013_auto_20240516_0017.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2024-05-15 18:47
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('events', '0047_testattendance_mdlgrade'),
+ ('training', '0012_auto_20240515_1424'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='participant',
+ name='city',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='events.City'),
+ ),
+ migrations.AddField(
+ model_name='participant',
+ name='company',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='training.Company'),
+ ),
+ ]
diff --git a/training/models.py b/training/models.py
index f7dc2d35d..feb1c6da1 100755
--- a/training/models.py
+++ b/training/models.py
@@ -12,7 +12,7 @@
EVENT_TYPE_CHOICES =(
('', '-----'), ('FDP', 'Paid FDP'), ('Workshop', 'Blended Mode Workshop'),('sdp', 'Student Training Programme'),('TPDP', 'Teachers Professional Development Program'
-), ('SSDP', 'School Students Development Program')
+), ('SSDP', 'School Students Development Program'), ('PDP', 'Professional Development Program'), ('CDP', 'Community Development Program'),
)
@@ -20,6 +20,19 @@
('', '-----'), (1, 'Subscribed College'),(2, 'Manual Registration')
)
+class Company(models.Model):
+ name = models.CharField(max_length=250)
+ added_by = models.ForeignKey(User, on_delete=models.PROTECT)
+ created = models.DateTimeField(auto_now_add=True)
+ updated = models.DateTimeField(auto_now=True)
+
+ class Meta:
+ verbose_name_plural = "Companies"
+ ordering = ['name']
+
+ def __str__(self):
+ return self.name
+
class TrainingEvents(models.Model):
event_type = models.CharField(max_length = 50, choices = EVENT_TYPE_CHOICES)
@@ -39,6 +52,8 @@ class TrainingEvents(models.Model):
training_status = models.PositiveSmallIntegerField(default=0)
entry_date = models.DateTimeField(auto_now_add = True)
entry_user = models.ForeignKey(User, on_delete=models.PROTECT)
+ company = models.ForeignKey(Company, on_delete=models.PROTECT, null=True, blank=True)
+ city = models.ForeignKey(City, on_delete=models.PROTECT, null=True, blank=True)
def __str__(self):
@@ -60,6 +75,8 @@ class Participant(models.Model):
foss_language = models.ForeignKey(Language, on_delete=models.PROTECT, null=True )
payment_status = models.ForeignKey(Payee, on_delete=models.PROTECT, null=True)
reg_approval_status = models.PositiveSmallIntegerField(default=0)
+ company = models.ForeignKey(Company, on_delete=models.PROTECT, null=True, blank=True)
+ city = models.ForeignKey(City, on_delete=models.PROTECT, null=True, blank=True)
class Meta(object):
unique_together = ('event', 'user', 'payment_status')
diff --git a/training/templates/create_event.html b/training/templates/create_event.html
index 274d528ae..d14a23e3b 100644
--- a/training/templates/create_event.html
+++ b/training/templates/create_event.html
@@ -46,7 +46,15 @@
-