Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion cms/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,13 @@ def dispatcher(request, permalink=''):


def create_profile(user, phone):
confirmation_code = ''.join(random.choice(string.ascii_uppercase + string.digits + string.ascii_lowercase) for x in range(7))
confirmation_code = create_confirmation_code()
profile = Profile(user=user, confirmation_code=confirmation_code, phone=phone)
profile.save()
return profile

def create_confirmation_code():
return ''.join(random.choice(string.digits) for x in range(6))

def account_register(request):
# import recaptcha validate function
Expand Down
20 changes: 20 additions & 0 deletions donate/migrations/0011_payee_callbackurl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2024-11-27 06:13
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('donate', '0010_auto_20240903_1819'),
]

operations = [
migrations.AddField(
model_name='payee',
name='callbackurl',
field=models.CharField(default=None, max_length=500, null=True),
),
]
1 change: 1 addition & 0 deletions donate/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class Payee(models.Model):
purpose = models.CharField(max_length=255, null=True)
reqId = models.CharField(max_length=100, default='')
source = models.CharField(max_length=25, null=True, default=None)
callbackurl = models.CharField(max_length=500, null=True, default=None)
def get_selected_foss(self):
selected_foss = {}
c = 0
Expand Down
26 changes: 19 additions & 7 deletions donate/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from django.template.context_processors import csrf
from donate.forms import PayeeForm, TransactionForm
from donate.models import *
from cms.views import create_profile, email_otp,send_registration_confirmation
from cms.views import create_profile, email_otp,send_registration_confirmation, create_confirmation_code
from django import forms
from django.views.decorators.csrf import csrf_protect, csrf_exempt
from django.contrib.auth.mixins import LoginRequiredMixin
Expand Down Expand Up @@ -126,8 +126,10 @@ def form_valid(request, form, purpose):
form_data.expiry = calculate_expiry()
form_data.purpose = purpose
source = request.POST.get('source')
callbackurl = request.POST.get('callbackurl')
if source == 'deet':
form_data.source = 'deet'
form_data.callbackurl = callbackurl
form_data.save()
payee_obj = form_data
# Save CdFossLanguages record
Expand Down Expand Up @@ -191,14 +193,20 @@ def controller(request, purpose):
participant_form.save()
except :
return redirect('training:list_events', status='myevents')
data = get_final_data(request, payee_obj_new, purpose)
final_data = get_final_data(request, payee_obj_new, purpose)
if payee_obj_new.source == 'deet':
callbackurl = request.POST.get('callbackurl')
json = {'id': f'p{payee_obj_new.id}', 'name': payee_obj_new.name,
'email':payee_obj_new.email, 'paid college': False,
'amount': payee_obj_new.amount, 'status': 0}
requests.post(callbackurl, json)
return render(request, 'payment_status.html', data)
headers = {"Content-Type": "application/json; charset=utf-8"}
data = {
"id": f"p{payee_obj_new.id}",
"name": payee_obj_new.name,
"email":payee_obj_new.email,
"paid college": False,
"amount": payee_obj_new.amount,
"status": 0
}
response = requests.post(callbackurl, headers=headers, json=data)
return render(request, 'payment_status.html', final_data)


@csrf_exempt
Expand Down Expand Up @@ -269,6 +277,10 @@ def send_onetime(request):
else:
send_registration_confirmation(user)
context['message'] = "inactive_user"
profile = Profile.objects.get(user=user)
profile.confirmation_code = create_confirmation_code()
profile.save()
email_otp(user)

except MultipleObjectsReturned as e:
pass
Expand Down
15 changes: 14 additions & 1 deletion events/viewsv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -2936,6 +2936,19 @@ def update_status(pd, status):
pd.status = 2
pd.description = 'Payment fail'
pd.save()
if pd.source == 'deet':
callbackurl = pd.callbackurl
headers = {"Content-Type": "application/json; charset=utf-8"}
data = {
"id": f"{pd.id}",
"name": pd.name,
"email":pd.email,
"paid college": False,
"amount": pd.amount,
"status": pd.status
}
response = requests.post(callbackurl, headers=headers, json=data)


def payment_details(request,choice):
academic_id = Accountexecutive.objects.filter(user = request.user).values('academic_id','academic_id__institution_name')
Expand Down Expand Up @@ -3565,4 +3578,4 @@ def form_valid(self, form, **kwargs):
ac_key.save()

messages.success(self.request, "Payment Details for academic is added successfully.")
return HttpResponseRedirect(self.success_url)
return HttpResponseRedirect(self.success_url)
9 changes: 1 addition & 8 deletions static/cdcontent/js/cdcontent.js
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ $(document).ready(function(){
var otp = $('#otp_value').val();
var email = $('#id_email').val();

if(otp.length>6){
if(otp.length > 5){
$.ajax({
url:"/donate/validate",
type:"POST",
Expand Down Expand Up @@ -279,13 +279,6 @@ function delete_foss(elem){
$('.add_foss_lang').show();
}

function send_otp(){
$("#send_otp").show();
document.getElementById("otp_sent_msg").innerHTML = "OTP sent";
document.getElementById('otp_sent_msg').className = 'label label-success';
$("#otp_value").show();
$("#otp_sent_msg").show().delay(10000).fadeOut();
}

function show_added_foss(selected_foss){
$.ajax({
Expand Down
33 changes: 11 additions & 22 deletions training/templates/register_user.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ <h3 class="panel-title"><b><i class="fa fa-times" aria-hidden="true"></i>Welcome
<div class="col-lg-8">
{% render_field form.email class+="form-control email" %}
{{ form.email.errors }}
<a href="#" class="btn btn-primary mb-2" onclick="send_otp();" id="send_otp" style="display: none; margin-top: 10px;">Send OTP</a>
{% if not is_logged_in %}
<a href="#" class="btn btn-primary mb-2" id="send_otp" style="margin-top: 10px;">Send OTP</a>
{% endif %}
</div>

<div id="email-info" class="col-md-8 col-md-offset-4"></div>
Expand Down Expand Up @@ -396,9 +398,7 @@ <h3 class="panel-title"><b><i class="fa fa-times" aria-hidden="true"></i>Welcome
catch{}
});

$('#id_email').on('focusout',function(){
var isReadOnly = $('#id_email').is('[readonly]');
if (!isReadOnly) {
$('#send_otp').on('click',function(){
var username = $('#id_name').val();
var email = $('#id_email').val();
var demail = $('#demail').val();
Expand All @@ -423,31 +423,20 @@ <h3 class="panel-title"><b><i class="fa fa-times" aria-hidden="true"></i>Welcome
success: function(data) {
if (data['valid_email']=='1') {
$('#email-info').html('');
if(data['message']=="active_user"){
$("#send_otp").hide();
$("#pwd").show();
$("#forgot_pwd").show();
$("#otp_value").hide();
$("#otp_sent_msg").hide();
$("#email-info").html('This Email Id is already registered with Spoken Tutorials. Please enter your password to proceed.');
document.getElementById("email-info").style.color = "green";
}
else if(data['message']=='inactive_user'){
document.getElementById("otp_sent_msg").innerHTML = "OTP Re-sent";
document.getElementById('otp_sent_msg').className = 'label label-success';
if(data['message']=="active_user" || data['message'] == "new" || data['message'] == 'inactive_user'){
$("#send_otp").show();
$("#pwd").hide();
}
else{
$("#send_otp").show();
$("#pwd").hide();
}
$("#send_otp").show();
document.getElementById("otp_sent_msg").innerHTML = "OTP sent";
document.getElementById('otp_sent_msg').className = 'label label-success';
$("#otp_value").show();
$("#otp_sent_msg").show().delay(10000).fadeOut();
}else{
$('#email-info').html(data['email_validation']);
}
}
}
});
}
});

$( document ).ready(function() {
Expand Down
56 changes: 36 additions & 20 deletions training/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.core.serializers import serialize
from django.db.models import Q
from django.contrib.auth.models import User
from django.contrib.auth import logout
from django.urls import reverse
from django.db import IntegrityError
# Python imports
Expand Down Expand Up @@ -143,26 +144,14 @@ def _validate_parameters(parameter, value):
def register_user(request):
form = RegisterUser()
template_name = "register_user.html"
source = None
context = {}
context['form']= form
context['source'] = None
context['source'] = source
context['email'] = None
context['callbackurl'] = None
context['is_logged_in'] = False

if request.user.is_authenticated():
user = request.user
profile = Profile.objects.get(user=user)
form.fields["name"].initial = user.get_full_name()
form.fields["email"].initial = getattr(user, 'email')
form.fields["phone"].initial = profile.phone
form.fields['email'].widget.attrs['readonly'] = True
if user.profile_set.all():
try:
form.fields["state"].initial = getattr(user.profile_set.all()[0], 'state')
college = user_college(request.user)
context['user_college'] = college
except Exception as e:
raise e
if request.method == 'GET':
source = request.GET.get('source', None)
foss = request.GET.get('foss', None)
Expand Down Expand Up @@ -203,6 +192,7 @@ def register_user(request):
form.fields["amount"].widget.attrs['readonly'] = True
context['event_obj']= event_register
form.fields['name'].initial = name
form.fields["email"].initial = email
form.fields['phone'].initial = phone
if gender.lower() == 'female':
form.fields['gender'].initial = 'F'
Expand All @@ -213,9 +203,28 @@ def register_user(request):
form.fields['name'].widget.attrs['readonly'] = True
form.fields['phone'].widget.attrs['readonly'] = True
form.fields['gender'].widget.attrs['readonly'] = True
form.fields['email'].widget.attrs['readonly'] = True
context['source'] = source
context['email'] = email
context['callbackurl'] = callbackurl
if request.user.is_authenticated():
if source == 'deet':
logout(request)
else:
user = request.user
profile = Profile.objects.get(user=user)
form.fields["name"].initial = user.get_full_name()
form.fields["email"].initial = getattr(user, 'email')
form.fields["phone"].initial = profile.phone
form.fields['email'].widget.attrs['readonly'] = True
context['is_logged_in'] = True
if user.profile_set.all():
try:
form.fields["state"].initial = getattr(user.profile_set.all()[0], 'state')
college = user_college(request.user)
context['user_college'] = college
except Exception as e:
raise e
if request.method == 'POST':
event_id = request.POST.get("event_id_info")
if event_id:
Expand All @@ -231,7 +240,7 @@ def register_user(request):
form.fields["amount"].initial = float(event_register.event_fee) + gst
form.fields["amount"].widget.attrs['readonly'] = True
context['event_obj']= event_register
return render(request, template_name,context)
return render(request, template_name, context)

@csrf_exempt
def reg_success(request, user_type):
Expand Down Expand Up @@ -261,6 +270,7 @@ def reg_success(request, user_type):

if source == 'deet':
form_data.source = source
form_data.callbackurl = callbackurl
if not event_type in ['PDP', 'CDP']:
try:
form_data.college = AcademicCenter.objects.get(institution_name=request.POST.get('college'))
Expand Down Expand Up @@ -304,10 +314,16 @@ def reg_success(request, user_type):
# if user is already a paid user -> render reg_success.html showing registration success
context = {'participant_obj':form_data}
if form_data.source == 'deet':
json = {'id': f'n{form_data.id}', 'name': form_data.name,
'email': form_data.email, 'paid college': True,
'amount': 0.0, 'status': 1}
requests.post(callbackurl, json)
headers = {"Content-Type": "application/json; charset=utf-8"}
data = {
"id": f"n{form_data.id}",
"name": form_data.name,
"email":form_data.email,
"paid college": True,
"amount": 0.0,
"status": 1
}
response = requests.post(callbackurl, headers=headers, json=data)
return render(request, template_name, context)
else:
# if user has made payment from ILW interface -> return Participant form
Expand Down