def docvid_login(request, user,courseid): # _track_user_login(user, request) try: if not request.user.is_authenticated: request.session.set_expiry(604800) django_login(request, user, backend='django.contrib.auth.backends.ModelBackend') else: logout(request) request.session.set_expiry(604800) django_login(request, user, backend='django.contrib.auth.backends.ModelBackend') #request.session.set_expiry(604800) request.user = user #logs.info('userid--> %s',request.user) user_extra_data = userdetails(user.id) displayname = getuserfullprofile(user.id) course_id = request.data.get('course_id','') course_id = course_id.replace(' ','+') #logs.info('course_id %s',course_id) course_key = None if course_id: course_key = CourseKey.from_string(course_id) if not CourseEnrollment.is_enrolled(user, course_key) : user_course_enrollment = CourseEnrollment.enroll(user=user, course_key=course_key,mode='honor') # else: # query = course_id.replace('+','%2B') # query = query.replace(':','%3A') # now_asia = courseid.start.astimezone(timezone('Asia/Kolkata')) # docvidya_course_detail = requests.get('https://drlprdoce-drreddys.cec.ocp.oraclecloud.com//content/published/api/v1.1/items?fields=slug&orderBy=updateddate:desc&limit=1&q=((type eq "DocV-Courses") and (fields.course_id eq "' + query + '"))&channelToken=cf84462f73e542e7a8d270dfd2580730') # response = json.loads(docvidya_course_detail.text.encode('utf8')) # courseurl = request.session['drl_http_referer']+'/docv-courses-detail/'+response['items'][0]['slug'] # courseurl = courseurl.replace('https://','') # #logs.info("docvidya_course_detail--> %s",response['items'][0]['slug']) # enrolldata = CourseEnrollment.objects.get(user=user,course_id=course_key) # course_image_url = courseid.course_image_url.replace('+','%2B') # logs.info("starttime-->%s",now_asia.strftime("%H:%M")) # logs.info("api-details--> https://s394336720.t.eloqua.com/e/f2?elqFormName=CourseEvents&elqSiteID=394336720&emailAddress="+user.email+"&CourseId="+courseid.display_number_with_default+"&CourseName="+courseid.display_name+"&BannerURL=https://learn.docmode.org"+str(course_image_url)+"&Status=Enrolled&FullName="+displayname.name+"&DisplayDate="+str(courseid.start.date())+"&courseURL="+courseurl+"&EnrollmentID="+str(enrolldata.id)+"&Key=62f74068-90d2-4fd2-bd76-d657fbbbca14&Date="+str(datetime.today())) # syncmail = requests.post("https://s394336720.t.eloqua.com/e/f2?elqFormName=CourseEvents&elqSiteID=394336720&emailAddress="+user.email+"&CourseId="+courseid.display_number_with_default+"&CourseName="+courseid.display_name+"&BannerURL=https://learn.docmode.org"+str(course_image_url)+"&Status=Enrolled&FullName="+displayname.name+"&DisplayDate="+str(courseid.start.date())+"&courseURL="+courseurl+"&EnrollmentID="+str(enrolldata.id)+"&Key=62f74068-90d2-4fd2-bd76-d657fbbbca14&Date="+str(datetime.today())) # logs.info("syncmail--> %s",syncmail.__dict__) redirect_url = 'https://docvidya.learn.docmode.org/courses/'+course_id+'/courseware' response = JsonResponse({ 'success': True, 'redirect_url':redirect_url, 'status': 200, 'email':user.email }) #logs.info(u'response2--> %s', response) return set_logged_in_cookies(request, response, user) except Exception as exc: # pylint: disable=broad-except # AUDIT_LOG.critical("Login failed - Could not create session. Is memcached running?") logs.critical("Login failed - Could not create session. Is memcached running?") logs.exception(exc)
def send_course_completion_mail(sender, user, course_id, **kwargs): try: course_email = Custom_email.objects.get( course_id=course_id, template_name="completion_mail.template") log.info(u"course_email->%s", course_email) if course_email: connection = get_connection() connection.open() log.info("->-> XX == %s ++ %s ++ %s", user, course_id) userprofile = getuserfullprofile(user.id) email = user.email subject = course_email.subject message = ("Congratulations" + user.username + "you are enrolled in the course") from_addr = "*****@*****.**" course = get_course(course_id) global_email_context = _get_course_email_context(course) email_context = {"name": "", "email": ""} email_context.update(global_email_context) email_context["email"] = email email_context["name"] = userprofile.name email_context["user_id"] = user.id email_context["course_id"] = course_id email_template = course_email.get_template() plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) log.info(u"plaintext_msg %s", plaintext_msg) html_msg = email_template.render_htmltext( course_email.html_message, email_context) log.info(u"html_msg %s", html_msg) email_msg = EmailMultiAlternatives(subject, plaintext_msg, from_addr, [email], connection=connection) log.info(u"email_msg1->%s", email_msg) email_msg.attach_alternative(html_msg, "text/html") email_msg.send() log.info(u"email_msg2->%s", email_msg) except ObjectDoesNotExist: course_email = "Not set"
def canopi_user_dashboard(request): user = request.user user_profile = getuserfullprofile(request.user.id) user_extra_data = userdetails(request.user.id) wallet_user = docmode_canopi_users.objects.filter(user_id=user.id) if not wallet_user: return redirect("/wallet_user_registration") authtoken = docmode_canopi_auth.objects.all().last() log.info('datetime-->%s,%s', authtoken.validity, authtoken) if authtoken.validity < datetime.datetime.now(UTC): auth = requests.request( "GET", "https://koa.docmode.org/api/v1/docmode/canopi_auth/") authtoken = docmode_canopi_auth.objects.all().last() log.info('auth-->%s', auth.json()) wallet_user = docmode_canopi_users.objects.get(user_id=user.id) log.info("wallet_user-->%s", wallet_user.entityid) url = "https://ppi-test.canopi.in/canopi-payments/ppi/v1/cards/balance/" + wallet_user.entityid headers = { "Content-Type": "application/json", "Authorization": "Bearer " + str(authtoken) } log.info("headers-->%s", headers) response = requests.request("GET", url, headers=headers) log.info("response-->%s", response.json()) context = { "errors": "welcome", "csrf": csrf(request)["csrf_token"], "profile": user_profile, "extra_data": user_extra_data, "response": response.json() } return render_to_response("canopi_wallet/user_wallet_dashboard.html", context)
def vkonnect_auth(request, user, courseid): # _track_user_login(user, request) try: #request.session.set_expiry(604800) #django_login(request, user, backend='django.contrib.auth.backends.ModelBackend') #request.session.set_expiry(604800) request.user = user user_extra_data = userdetails(user.id) user_ext = user_extra_data user_detail = getuserfullprofile(user.id) course_id = request.data.get('course_id', '') course_id = course_id.replace(' ', '+') #logs.info('course_id %s',course_id) course_key = None if course_id: course_key = CourseKey.from_string(course_id) if not CourseEnrollment.is_enrolled(user, course_key): #logs.info("course enrollment function will be call") CourseEnrollment.enroll(user=user, course_key=course_key, mode='honor') redirect_url = 'https://vkonnecthealth.koa.docmode.org/courses/' + course_id + '/courseware' logs.debug("Setting user session to never expire") return Response({ 'success': True, 'redirect_url': redirect_url, 'status': 200, 'email': user.email, 'email_valid': 1 }) return response logs.debug("Setting user session to never expire") except Exception as exc: # pylint: disable=broad-except # AUDIT_logs.critical("Login failed - Could not create session. Is memcached running?") logs.critical( "Login failed - Could not create session. Is memcached running?") logs.exception(exc)
def _rows_for_users(self, context, users): """ Returns a list of rows for the given users for this report. """ with modulestore().bulk_operations(context.course_id): bulk_context = _CourseGradeBulkContext(context, users) success_rows, error_rows = [], [] for user, course_grade, error in CourseGradeFactory().iter( users, course=context.course, collected_block_structure=context.course_structure, course_key=context.course_id, ): #Added by Mahendra user_fullname = getuserfullprofile(user.id) user_extra_info = userdetails(user.id) if not course_grade: # An empty gradeset means we failed to grade a student. error_rows.append( [user.id, user.username, text_type(error)]) else: #Updated by Mahendra success_rows.append( [ user.id, user.email, user_fullname.name, user.username, user_extra_info.rstate, user_extra_info.rcity ] + self._user_grades(course_grade, context) + self._user_cohort_group_names(user, context) + self._user_experiment_group_names(user, context) + self._user_team_names(user, bulk_context.teams) + self._user_verification_mode( user, context, bulk_context.enrollments) + self._user_certificate_info( user, context, course_grade, bulk_context.certs) + [_user_enrollment_status(user, context.course_id)]) return success_rows, error_rows
def cme_export_csv(request, course_id, datatype): import csv from django.utils.encoding import smart_str from opaque_keys.edx.locations import SlashSeparatedCourseKey cid = CourseKey.from_string(course_id) response = HttpResponse(content_type="text/csv") response["Content-Disposition"] = "attachment; filename=users.csv" writer = csv.writer(response, csv.excel) response.write(u"\ufeff".encode( "utf8")) # BOM (optional...Excel needs it to open UTF-8 file properly) course_id = str(cid) course_number = course_id.split("+") user = request.user course_details = CourseOverview.objects.get(id=cid) course_exinfo = course_extrainfo.objects.get(course_id=cid) webinar_time = int(course_exinfo.total_webinar_hours) if user.is_staff: if datatype == "enrolled": writer.writerow([ smart_str(u"Userid"), smart_str(u"Firstname"), smart_str(u"Last Name"), smart_str(u"Emailid"), smart_str(u"ISD"), smart_str(u"Mobile number"), smart_str(u"Country"), smart_str(u"City"), smart_str(u"Place of work"), smart_str(u"Profession"), smart_str(u"Enrolled date"), ]) response["Content-Disposition"] = ("attachment; filename=" + str(course_number[1]) + "_enrolledusers.csv") crows = CourseEnrollment.objects.filter(course_id=cid) for row in crows: logs.info("id--> %s", row.user_id) try: assoc_user = User.objects.get(id=row.user_id) user_detail = getuserfullprofile(row.user_id) user_ext = userdetails(assoc_user.id) if (user_ext.user_extra_data != "" and "{" in user_ext.user_extra_data): extd = ast.literal_eval(user_ext.user_extra_data) else: extd = {} ext = json.dumps(extd) ext = eval(ext) name = user_detail.name.split(" ") fname = name[0] if len(name) > 1: lname = name[1] else: lname = "NA" if ext.get("isdcode"): isdcode = ext["isdcode"] elif ext.get("country_code"): isdcode = ext.get("country_code") else: isdcode = "NA" if ext.get("placeofwork"): placeofwork = ext["placeofwork"] elif ext.get("place_of_work"): placeofwork = ext.get("place_of_work") else: placeofwork = "NA" profession = ext.get("profession") if profession: profession = ext["profession"] else: profession = "NA" writer.writerow([ smart_str(row.user_id), smart_str(fname), smart_str(lname), smart_str(assoc_user.email), smart_str(isdcode), smart_str(user_ext.phone), smart_str(user_ext.rcountry), smart_str(user_ext.rcity), smart_str(placeofwork), smart_str(profession), smart_str(row.created) ]) except ObjectDoesNotExist: usernotfound = 0 elif datatype == "viewers": writer.writerow([ smart_str(u"Userid"), smart_str(u"Firstname"), smart_str(u"Last Name"), smart_str(u"Emailid"), smart_str(u"ISD"), smart_str(u"Mobile number"), smart_str(u"Country"), smart_str(u"City"), smart_str(u"Place of work"), smart_str(u"Profession"), smart_str(u"Start date"), smart_str(u"Start time"), smart_str(u"End date"), smart_str(u"End time"), smart_str(u"Duration"), ]) response["Content-Disposition"] = ("attachment; filename=" + str(course_number[1]) + "_viewers.csv") # vrows = ( # StudentModule.objects.filter( # course_id=cid, module_type="course" # ) # .values("student_id", "created", "state") # .annotate(dcount=Count("student_id")) # ) # vrows = StudentModule.objects.filter(course_id=cid,module_type='sequential').values('student_id','created','state').distinct() vrows = (user_session_tracking.objects.filter( course_id=cid, pagein__gte=course_details.start).values( "user_id", "course_id").distinct()[300:450]) count = 0 for vrow in vrows: count = count + 1 logs.info("id--> %s,%s", vrow["user_id"], count) userlogin = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"], pagein__gte=course_details.start).first() userlogout = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"]).last() assoc_user = User.objects.get(id=vrow["user_id"]) user_ext = userdetails(assoc_user.id) intime = userlogin.pagein.astimezone(timezone("Asia/Kolkata")) if userlogout.track_updated == 0: new_out_time = userlogout.pageout + datetime.timedelta( hours=webinar_time) outime = new_out_time.astimezone(timezone("Asia/Kolkata")) total_time = str(new_out_time - userlogin.pagein) else: outime = userlogout.pageout.astimezone( timezone("Asia/Kolkata")) total_time = str(userlogout.pageout - userlogin.pagein) user_detail = getuserfullprofile(assoc_user.id) extd = ast.literal_eval(user_ext.user_extra_data) ext = json.dumps(extd) ext = eval(ext) if (user_ext.user_extra_data != "" and "{" in user_ext.user_extra_data): extd = ast.literal_eval(user_ext.user_extra_data) else: extd = {} ext = json.dumps(extd) ext = eval(ext) name = user_detail.name.split(" ") fname = name[0] if len(name) > 1: lname = name[1] else: lname = "NA" if ext.get("isdcode"): isdcode = ext["isdcode"] elif ext.get("country_code"): isdcode = ext.get("country_code") else: isdcode = "NA" if ext.get("placeofwork"): placeofwork = ext["placeofwork"] elif ext.get("place_of_work"): placeofwork = ext.get("place_of_work") else: placeofwork = "NA" profession = ext.get("profession") if profession: profession = ext["profession"] else: profession = "NA" writer.writerow([ smart_str(vrow["user_id"]), smart_str(fname), smart_str(lname), smart_str(assoc_user.email), smart_str(isdcode), smart_str(user_ext.phone), smart_str(user_ext.rcountry), smart_str(user_ext.rcity), smart_str(placeofwork), smart_str(profession), smart_str(intime.strftime("%b %d, %Y ")), smart_str(intime.strftime("%H:%M")), smart_str(outime.strftime("%b %d, %Y ")), smart_str(outime.strftime("%H:%M")), smart_str(total_time), ]) return response
def handle(self, *args, **kwargs): from student.models import User from lms.djangoapps.reg_form.views import get_authuser from student.models import CourseEnrollment from lms.djangoapps.grades.models import PersistentCourseGrade from openedx.core.djangoapps.site_configuration import ( helpers as configuration_helpers, ) from lms.djangoapps.send_custom_email.models import ( Custom_email, CustomEmailTemplate, custom_mail_to_users, ) from django.core.mail import EmailMultiAlternatives, get_connection from opaque_keys.edx.keys import CourseKey, UsageKey from django.core.exceptions import ObjectDoesNotExist from lms.djangoapps.reg_form.views import getuserfullprofile, userdetails from lms.djangoapps.course_extrainfo.models import course_extrainfo from bulk_email.tasks import _get_course_email_context from courseware.courses import ( get_courses, get_course, get_course_by_id, get_permission_for_course_about, get_studio_url, get_course_overview_with_access, get_course_with_access, sort_by_announcement, sort_by_start_date, ) coursetype = course_extrainfo.objects.filter(course_type=1) association_list = [] for courseid in coursetype: course_id = CourseKey.from_string(courseid.course_id) enrolled_users_lists = CourseEnrollment.objects.filter( course_id=course_id) for userid in enrolled_users_lists: try: non_passed_users = PersistentCourseGrade.objects.get( user_id=userid.user_id, course_id=userid.course_id, letter_grade="", ) user_lastlogin = User.objects.get( id=non_passed_users.user_id) if user_lastlogin.last_login is not None: diffdate = (datetime.datetime.now(UTC) - user_lastlogin.last_login) association_dict = {} if diffdate.days >= 3: try: course_email = Custom_email.objects.get( course_id=userid.course_id, template_name= "universal_reminder_email.template", ) if course_email: log.info("course_email %s", course_email) cid1 = str(course_id) userprofile = getuserfullprofile( user_lastlogin.id) connection = get_connection() connection.open() email = user_lastlogin.email message = ( "Congratulations" + user_lastlogin.username + "you are enrolled in the course") from_addr = "*****@*****.**" course = get_course(course_id) global_email_context = _get_course_email_context( course) email_context = {"name": "", "email": ""} email_context.update(global_email_context) email_context["email"] = email email_context["name"] = userprofile.name email_context[ "user_id"] = user_lastlogin.id email_context["course_id"] = course_id subject = ("Keep learning in " + email_context["course_title"]) email_template = course_email.get_template( ) plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) html_msg = email_template.render_htmltext( course_email.html_message, email_context) email_msg = EmailMultiAlternatives( subject, plaintext_msg, from_addr, [email], connection=connection, ) email_msg.attach_alternative( html_msg, "text/html") email_msg.send() mail_to_users = custom_mail_to_users( course_emailid=course_email.id, user_id=user_lastlogin.id, user_email=email, course_id=course_id, ) mail_to_users.save() log.info(u"email_msg2->%s", email_msg) except ObjectDoesNotExist: cid = CourseKey.from_string( "course-v1:docmode+DM001+2018_Feb_DM001") course_email = Custom_email.objects.get( course_id=cid, template_name= "universal_reminder_email.template", ) if course_email: log.info("course_email %s", course_email) cid1 = str(course_id) userprofile = getuserfullprofile( user_lastlogin.id) connection = get_connection() connection.open() email = user_lastlogin.email message = ( "Congratulations" + user_lastlogin.username + "you are enrolled in the course") from_addr = "*****@*****.**" course = get_course(course_id) global_email_context = _get_course_email_context( course) email_context = {"name": "", "email": ""} email_context.update(global_email_context) email_context["email"] = email email_context["name"] = userprofile.name email_context[ "user_id"] = user_lastlogin.id email_context["course_id"] = course_id subject = ("Keep learning in " + email_context["course_title"]) email_template = course_email.get_template( ) plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) html_msg = email_template.render_htmltext( course_email.html_message, email_context) email_msg = EmailMultiAlternatives( subject, plaintext_msg, from_addr, [email], connection=connection, ) email_msg.attach_alternative( html_msg, "text/html") email_msg.send() mail_to_users = custom_mail_to_users( course_emailid=course_email.id, user_id=user_lastlogin.id, user_email=email, course_id=course_id, ) mail_to_users.save() log.info(u"email_msg2->%s", email_msg) except ObjectDoesNotExist: non_passed_users = "n/a"
def docvid_auth(request, user,courseid): # _track_user_login(user, request) try: #request.session.set_expiry(604800) #django_login(request, user, backend='django.contrib.auth.backends.ModelBackend') #request.session.set_expiry(604800) request.user = user user_extra_data = userdetails(user.id) displayname = getuserfullprofile(user.id) course_id = request.data.get('course_id','') course_id = course_id.replace(' ','+') #logs.info('course_id %s',courseid) course_key = None if course_id: course_key = CourseKey.from_string(course_id) if not CourseEnrollment.is_enrolled(user, course_key) : #logs.info("course enrollment function will be call") #CourseEnrollment.enroll(user=user, course_key=course_key,mode='honor') user_course_enrollment = CourseEnrollment.enroll(user=user, course_key=course_key,mode='honor') if user_course_enrollment: #logs.info("course enrollment function will be call") query = course_id.replace('+','%2B') query = query.replace(':','%3A') now_asia = courseid.start.astimezone(timezone('Asia/Kolkata')) now_asia = now_asia.strftime("%I:%M %p") docvidya_course_detail = requests.get('https://drlprdoce-drreddys.cec.ocp.oraclecloud.com//content/published/api/v1.1/items?fields=slug&orderBy=updateddate:desc&limit=1&q=((type eq "DocV-Courses") and (fields.course_id eq "' + query + '"))&channelToken=cf84462f73e542e7a8d270dfd2580730') response = json.loads(docvidya_course_detail.text.encode('utf8')) courseurl = 'www.docvidya.com/docv-courses-detail/'+response['items'][0]['slug'] courseurl = courseurl.replace('https://','') #logs.info("docvidya_course_detail--> %s",response['items'][0]['slug']) enrolldata = CourseEnrollment.objects.get(user=user,course_id=course_key) course_image_url = courseid.course_image_url.replace('+','%2B') if '&' in courseid.display_name: course_name = courseid.display_name.replace('&','and') else: course_name = courseid.display_name course_exinfo = course_extrainfo.objects.get(course_id=course_id) #logs.info("course_exinfo--> %s",course_exinfo.__dict__) if course_exinfo.credit_point > 0: points = course_exinfo.credit_point else: points = 0 #logs.info("points-->%s",points) #logs.info("api-details--> https://s394336720.t.eloqua.com/e/f2?elqFormName=CourseEvents&elqSiteID=394336720&emailAddress="+user.email+"&CourseId="+courseid.display_number_with_default+"&CourseName="+courseid.display_name+"&BannerURL=https://learn.docmode.org"+str(course_image_url)+"&Status=Enrolled&FullName="+displayname.name+"&DisplayDate="+str(courseid.start.date())+' '+str(now_asia.strftime("%H:%M"))+"&courseURL="+courseurl+"&EnrollmentID="+str(enrolldata.id)+"&points="+str(points)+"&Key=62f74068-90d2-4fd2-bd76-d657fbbbca14&Date="+str(datetime.today())) syncmail = requests.post("https://s394336720.t.eloqua.com/e/f2?elqFormName=CourseEvents&elqSiteID=394336720&emailAddress="+user.email+"&CourseId="+courseid.display_number_with_default+"&CourseName="+course_name+"&BannerURL=https://learn.docmode.org"+str(course_image_url)+"&Status=Enrolled&FullName="+displayname.name+"&DisplayDate="+str(courseid.start.date())+'&DisplayTime='+str(now_asia)+"&courseURL="+courseurl+"&EnrollmentID="+str(enrolldata.id)+"&points="+str(points)+"&Key=62f74068-90d2-4fd2-bd76-d657fbbbca14&CourseDate="+str(courseid.start.strftime("%Y-%m-%dT%H:%M:%SZ"))) #logs.info("syncmail--> %s",syncmail.__dict__) redirect_url = 'https://docvidya.learn.docmode.org/courses/'+course_id+'/courseware' #logs.debug("Setting user session to never expire") return Response({ 'success': True, 'redirect_url':redirect_url, 'status': 200, 'email':user.email }) #return response #logs.debug("Setting user session to never expire") except Exception as exc: # pylint: disable=broad-except # AUDIT_LOG.critical("Login failed - Could not create session. Is memcached running?") logs.critical("Login failed - Could not create session. Is memcached running?") logs.exception(exc)
def send_welcome_email(sender, event=None, user=None, course_id=None, **kwargs): #log.info('welcome email %s,%s',user,course_id) if event == EnrollStatusChange.enroll: try: if ('viatris' in str(course_id)) or ('Viatris' in str(course_id)): log.info(u'viatris--> %s', course_id) course_email = Custom_email.objects.get(course_id=course_id) course_extra_data = course_extrainfo.objects.get( course_id=course_id) cid1 = str(course_email.course_id) userprofile = getuserfullprofile(user.id) connection = get_connection() connection.open() email = user.email message = 'Congratulations' + user.username + 'you are enrolled in the course' from_addr = 'Docmode - Congratulations <*****@*****.**>' course = get_course(course_id) course_start_date = get_default_time_display(course.start) global_email_context = _get_course_email_context(course) email_context = {'name': '', 'email': ''} email_context.update(global_email_context) email_context['email'] = email email_context['name'] = userprofile.name email_context['user_id'] = user.id email_context['course_id'] = course_id email_context['start_date'] = course.start.strftime( "%b %d, %Y") if 'Viatris-emas' in str(course_id): str_cid = str(course_id) cid = str_cid.split('+') new_cid = cid[0].split(':') email_context['new_course_url'] = 'https://' + new_cid[ 1] + '.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' subject = 'Thank you for Registering to ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Europe/Berlin')) email_context['timezone_shortcode'] = 'CET' # elif 'DRL' in str(course_id): # str_cid = str(course_id) # cid = str_cid.split('+') # new_cid = cid[0].split(':') # email_context['new_course_url'] = 'https://'+new_cid[1]+'.learn.docmode.org/courses/' + str(course_id) +'/course' # email_context['legalnotice'] = 'block' # email_context['emessage'] = 'none' # subject = 'Thank you for Registering to ' + email_context['course_title'] # now_asia = course.start.astimezone(timezone('Asia/Kolkata')) # email_context['timezone_shortcode'] = 'IST' elif 'atpon' in str(course_id): from_addr = 'Docmode - Gratulacje <*****@*****.**>' email_context[ 'new_course_url'] = 'https://viatris-atpon.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' email_context[ 'footer_title'] = 'Informacja o ochronie prywatności Viatris' email_context['thank_you'] = 'Dziękujemy' if course_extra_data.course_type == '1': subject = 'Gratulacje kurs na który jesteś zapisany to ' + email_context[ 'course_title'] email_context[ 'course_msg'] = 'Dziękujemy za rejestrację do kursu pt' email_context[ 'course_webinar_link_title'] = 'Kliknij tutaj aby przejść do kursu' else: subject = 'Gratulacje webinarium na który jesteś zapisany to ' + email_context[ 'course_title'] email_context[ 'course_webinar_link_title'] = 'Kliknij tutaj aby przejść do webinarium' email_context[ 'course_msg'] = 'Dziękujemy za rejestrację do webinarium pt' now_asia = course.start.astimezone( timezone('Europe/Berlin')) email_context['timezone_shortcode'] = 'CET' elif 'psychiatry' in str(course_id): email_context[ 'new_course_url'] = 'https://viatris-psychiatry.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' elif 'multimodal' in str(course_id): email_context[ 'new_course_url'] = 'https://viatris-multimodal-approach-oa.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' elif 'norge' in str(course_id): course_data = CourseOverview.objects.get(id=course_id) #log.info(u'course_data--> %s', course_data) from_addr = 'Viatris Norge <*****@*****.**>' email_context[ 'new_course_url'] = 'https://viatris-norge.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' email_context['course_title'] = course_data.display_name now_asia = course.start.astimezone( timezone('Europe/Berlin')) ctime = now_asia + timedelta(minutes=30) subject = 'Bekreftelse: påmelding WEBINAR - ' + email_context[ 'start_date'] + ' kl ' + ctime.strftime("%H:%M") + '.' email_context['timezone_shortcode'] = 'CET' elif 'farma' in str(course_id): #log.info(u'viatris--> %s', str_cid) from_addr = 'Viatris Farmaciaformacion <*****@*****.**>' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' subject = 'Gracias por registrarse en ' + email_context[ 'course_title'] email_context[ 'new_course_url'] = 'https://viatris-farmaciaformacion.learn.docmode.org/courses/' + str( course_id) + '/course' now_asia = course.start.astimezone( timezone('Europe/Berlin')) email_context['timezone_shortcode'] = 'CET' elif 'Viatris-via' in str(course_id): email_context[ 'new_course_url'] = 'https://viatris-via.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' else: email_context[ 'new_course_url'] = 'https://learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' if course_extra_data.course_type == '2': ctime = now_asia + timedelta(minutes=30) else: ctime = now_asia email_context['start_time'] = ctime.strftime("%X") diffdate = course.start - datetime.datetime.now(UTC) total_mins = (diffdate.days * 1440 + diffdate.seconds / 60) minutes = divmod(diffdate.seconds, 60) total_mins = abs(total_mins) if course_extra_data.google_calendar_url and total_mins > 59: email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to my Google calendar" email_context['background_color'] = '4E9CAF' email_context['show_calendar'] = 'block' else: email_context['google_calendar_url'] = '' email_context['google_calendar_title'] = '' email_context['background_color'] = '' email_context['show_calendar'] = 'None' email_template = course_email.get_template() plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) html_msg = email_template.render_htmltext( course_email.html_message, email_context) email_msg = EmailMultiAlternatives(subject, plaintext_msg, from_addr, [email], connection=connection) email_msg.attach_alternative(html_msg, 'text/html') email_msg.send() mail_to_users = custom_mail_to_users( course_emailid=course_email.id, user_id=user.id, user_email=email, course_id=course_id) mail_to_users.save() #log.info(u'drl_email->%s', email_msg) else: course_email = Custom_email.objects.get(course_id=course_id) if course_email: course_extra_data = course_extrainfo.objects.get( course_id=course_email.course_id) cid1 = str(course_email.course_id) userprofile = getuserfullprofile(user.id) connection = get_connection() connection.open() email = user.email subject = course_email.subject message = 'Congratulations' + user.username + 'you are enrolled in the course' from_addr = 'Docmode - Congratulations <*****@*****.**>' course = get_course(course_id) course_start_date = get_default_time_display(course.start) global_email_context = _get_course_email_context(course) email_context = {'name': '', 'email': ''} email_context.update(global_email_context) email_context['email'] = email email_context['name'] = userprofile.name email_context['user_id'] = user.id email_context['course_id'] = course_id email_context['start_date'] = course_start_date if 'SLNA' in str(course_id): email_context[ 'new_course_url'] = 'https://www.cmeworld.org/shalina-gerdandpepticulcers/' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' email_context[ 'start_date'] = '11th Dec, 2021 at West Africa 3:00PM,Ghana 2:00PM (GMT), Nigeria 3:00PM (WAT), Zambia 4:00PM (SAST), Kenya 5:00PM (EAT)' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' if course_extra_data.google_calendar_url: email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to my Google calendar" email_context['background_color'] = '4E9CAF' email_context['show_calendar'] = 'block' if 'virtual-guide' in str(course_id): email_context[ 'new_course_url'] = 'https://virtual-guide.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' subject = 'Felicitaciones, estás inscrito en ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' if course_extra_data.google_calendar_url: email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to my Google calendar" email_context['background_color'] = '4E9CAF' email_context['show_calendar'] = 'block' diffdate = course.start - datetime.datetime.now(UTC) total_mins = (diffdate.days * 1440 + diffdate.seconds / 60) minutes = divmod(diffdate.seconds, 60) total_mins = abs(total_mins) if course_extra_data.google_calendar_url and total_mins > 59: email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to my Google calendar" email_context['background_color'] = '4E9CAF' email_context['show_calendar'] = 'block' else: email_context['google_calendar_url'] = '' email_context['google_calendar_title'] = '' email_context['background_color'] = '' email_context['show_calendar'] = 'None' #log.info(u'diffdate %s',diffdate) if course_extra_data.google_calendar_url and diffdate.days > 1: #log.info(u'diffdate %s',diffdate) email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to calendar" email_context['background_color'] = '4E9CAF' else: email_context['google_calendar_url'] = '' email_context['google_calendar_title'] = '' email_context['background_color'] = '' email_template = course_email.get_template() plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) html_msg = email_template.render_htmltext( course_email.html_message, email_context) email_msg = EmailMultiAlternatives(subject, plaintext_msg, from_addr, [email], connection=connection) email_msg.attach_alternative(html_msg, 'text/html') email_msg.send() mail_to_users = custom_mail_to_users( course_emailid=course_email.id, user_id=user.id, user_email=email, course_id=course_id) mail_to_users.save() #log.info(u'email_msg2->%s', email_msg) except ObjectDoesNotExist: if not ('DRL' in str(course_id) or 'docv' in str(course_id)): #log.info('universal welcome email %s,%s',user,course_id) course_email = Custom_email.objects.get(id=3) course_extra_data = course_extrainfo.objects.get( course_id=course_id) cid1 = str(course_email.course_id) userprofile = getuserfullprofile(user.id) connection = get_connection() connection.open() email = user.email message = 'Congratulations' + user.username + 'you are enrolled in the course' from_addr = 'Docmode - Congratulations <*****@*****.**>' course = get_course(course_id) course_start_date = get_default_time_display(course.start) global_email_context = _get_course_email_context(course) email_context = {'name': '', 'email': ''} email_context.update(global_email_context) email_context['email'] = email email_context['name'] = userprofile.name email_context['user_id'] = user.id email_context['course_id'] = course_id email_context['start_date'] = course.start.strftime( "%b %d, %Y") if 'Viatris' in str(course_id) or 'viatris' in str(course_id): str_cid = str(course_id) cid = str_cid.split('+') new_cid = cid[0].split(':') if 'farma' in str_cid: #log.info(u'viatris--> %s', str_cid) email_context[ 'new_course_url'] = 'https://viatris-farmaciaformacion.learn.docmode.org/courses/' + str( course_id) + '/course' now_asia = course.start.astimezone( timezone('Europe/Berlin')) email_context['timezone_shortcode'] = 'CET' if 'india' in str_cid: email_context[ 'new_course_url'] = 'https://viatrisindia.learn.docmode.org/courses/' + str( course_id) + '/course' now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' elif 'multimodal' in str(course_id): log.info('email----->') email_context[ 'new_course_url'] = 'https://viatris-multimodal-approach-oa.learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' else: #log.info(u'viatris1--> %s', str_cid) email_context['new_course_url'] = 'https://' + new_cid[ 1] + '.learn.docmode.org/courses/' + str( course_id) + '/course' now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' subject = 'Thank you for Registering to ' + email_context[ 'course_title'] elif 'SLNA' in str(course_id): email_context[ 'new_course_url'] = 'https://www.cmeworld.org/shalina-gerdandpepticulcers/' email_context['legalnotice'] = 'block' email_context['emessage'] = 'none' email_context[ 'start_date'] = '11th Dec, 2021 at West Africa 3:00PM,Ghana 2:00PM (GMT), Nigeria 3:00PM (WAT), Zambia 4:00PM (SAST), Kenya 5:00PM (EAT)' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' else: email_context[ 'new_course_url'] = 'https://learn.docmode.org/courses/' + str( course_id) + '/course' email_context['legalnotice'] = 'none' email_context['emessage'] = 'block' subject = 'Congratulations you are enrolled in ' + email_context[ 'course_title'] now_asia = course.start.astimezone( timezone('Asia/Kolkata')) email_context['timezone_shortcode'] = 'IST' if course_extra_data.course_type == '2': ctime = now_asia + timedelta(minutes=30) else: ctime = now_asia email_context['start_time'] = ctime.strftime("%X") diffdate = course.start - datetime.datetime.now(UTC) total_mins = (diffdate.days * 1440 + diffdate.seconds / 60) minutes = divmod(diffdate.seconds, 60) total_mins = abs(total_mins) if course_extra_data.google_calendar_url and total_mins > 59: email_context[ 'google_calendar_url'] = course_extra_data.google_calendar_url email_context[ 'google_calendar_title'] = "Add to my Google calendar" email_context['background_color'] = '4E9CAF' email_context['show_calendar'] = 'block' else: email_context['google_calendar_url'] = '' email_context['google_calendar_title'] = '' email_context['background_color'] = '' email_context['show_calendar'] = 'None' email_template = course_email.get_template() plaintext_msg = email_template.render_plaintext( course_email.text_message, email_context) html_msg = email_template.render_htmltext( course_email.html_message, email_context) email_msg = EmailMultiAlternatives(subject, plaintext_msg, from_addr, [email], connection=connection) email_msg.attach_alternative(html_msg, 'text/html') email_msg.send() mail_to_users = custom_mail_to_users( course_emailid=course_email.id, user_id=user.id, user_email=email, course_id=course_id) mail_to_users.save()
def cme_world_auth(request, user, courseid): # _track_user_login(user, request) try: #request.session.set_expiry(604800) #django_login(request, user, backend='django.contrib.auth.backends.ModelBackend') #request.session.set_expiry(604800) request.user = user user_extra_data = userdetails(user.id) user_ext = user_extra_data user_detail = getuserfullprofile(user.id) course_id = request.data.get('course_id', '') course_id = course_id.replace(' ', '+') #logs.info('course_id %s',course_id) course_key = None if course_id: course_key = CourseKey.from_string(course_id) if not CourseEnrollment.is_enrolled(user, course_key): #logs.info("course enrollment function will be call") CourseEnrollment.enroll(user=user, course_key=course_key, mode='honor') redirect_url = 'https://shalina.learn.docmode.org/courses/' + course_id + '/courseware' logs.debug("Setting user session to never expire") missing_data = 0 if (user_ext.user_extra_data != "" and "{" in user_ext.user_extra_data): extd = ast.literal_eval(user_ext.user_extra_data) else: extd = {} ext = json.dumps(extd) ext = eval(ext) name = user_detail.name.split(" ") fname = name[0] if len(name) > 1: lname = name[1] else: missing_data = 1 lname = "NA" if ext.get("isdcode"): isdcode = ext["isdcode"] elif ext.get("country_code"): isdcode = ext.get("country_code") else: isdcode = "NA" if ext.get("placeofwork"): placeofwork = ext["placeofwork"] elif ext.get("place_of_work"): placeofwork = ext.get("place_of_work") else: placeofwork = "NA" missing_data = 1 profession = ext.get("profession") if profession: profession = ext["profession"] else: profession = "NA" missing_data = 1 othercountry = ext.get("othercountry") if othercountry: othercountry = ext["othercountry"] else: missing_data = 1 othercountry = "NA" otherisd = ext.get("otherisd") if otherisd: otherisd = ext["otherisd"] else: missing_data = 1 otherisd = "NA" logs.info('before if-----> ') if missing_data == 1: logs.info('after if-----> ') return Response({ 'success': True, 'fname': fname, 'lname': lname, 'email': user.email, 'isdcode': isdcode, 'phone': user_ext.phone, 'country': user_ext.rcountry, 'city': user_ext.rcity, 'placeofwork': placeofwork, 'profession': profession, 'othercountry': othercountry, 'otherisd': otherisd, 'status': 303 }) else: logs.info('after else-----> ') return Response({ 'success': True, 'redirect_url': redirect_url, 'status': 200, 'email': user.email, 'email_valid': 1 }) #return response logs.debug("Setting user session to never expire") except Exception as exc: # pylint: disable=broad-except # AUDIT_logs.critical("Login failed - Could not create session. Is memcached running?") logs.critical( "Login failed - Could not create session. Is memcached running?") logs.exception(exc)
def export_course_viewver_report(self,course_id,filename,admin_user_id,datatype,report_obj_id): import time time.sleep(5) course_report_obj = CourseReportLink.objects.get(id=report_obj_id) course_report_obj.status = "inprogress" course_report_obj.save() course_key = CourseKey.from_string(course_id) course_enrollment_user_ids = CourseEnrollment.objects.filter(course_id=course_key,is_active=True).values('user_id') workbook = xlsxwriter.Workbook(settings.MEDIA_ROOT + filename) worksheet = workbook.add_worksheet() import csv from django.utils.encoding import smart_str from opaque_keys.edx.locations import SlashSeparatedCourseKey cid = CourseKey.from_string(course_id) def getspecialization(userId): from lms.djangoapps.specialization.views import specializationName speczname = "" try: getDetails = extrafields.objects.get(user_id=userId) specname = specializationName(getDetails.specialization_id) if specname != " ": speczname = specname else: speczname = "N/A" except ObjectDoesNotExist: speczname = "N/A" return speczname def getusertype(userId): u_type = "" try: getDetails = extrafields.objects.get(user_id=userId) utype = getDetails.user_type if utype == "dr": u_type = "Doctor" elif utype == "hc": u_type == "Healthcare Specialists" elif utype == "ms": u_type = "Medical Student" elif utype == "u": u_type = "User" except ObjectDoesNotExist: u_type = "N/A" return u_type def getViewerName(userId): vName = "" try: getDetails = UserProfile.objects.get(user_id=userId) vName = getDetails.name except ObjectDoesNotExist: getDetails = None return vName def getemail(userId): vEmail = "" try: getDetails = User.objects.get(id=userId) vEmail = getDetails.email except ObjectDoesNotExist: getDetails = None return vEmail course_id = str(cid) course_number = course_id.split("+") user = User.objects.get(id=admin_user_id) course_details = CourseOverview.objects.get(id=cid) course_exinfo = course_extrainfo.objects.get(course_id=cid) row = 0 col = 0 if user.is_staff: if "synapse" in course_id: column_list = ["Userid","Name","Emailid","Mobile","Type","MCI","Specialization","Country","State","City","Pincode","Date","Video Watch time","Is Active","iadvl"] for column in column_list: worksheet.write(0, col, column) col += 1 elif 'SLNA' in course_id and datatype=='enrolled': column_list = ["Userid","First name","Lastname","Emailid","ISD","Mobile Number","Country","City","Place of work","Profession","Enrolled date"] for column in column_list: worksheet.write(0, col, column) col += 1 elif (str(course_details.start) > "2021-03-01 15:00:00" and datatype == "viewers" ): if 'SLNA' in course_id : column_list = ["Userid","First name","Lastname","Emailid","ISD","Mobile Number","Country","City","Place of work","Profession","Start date","Start Time","End date","End time","Duration"] else: column_list = ["Name","Emailid","Mobile","Type","MCI","Specialization","Country","State","City","Pincode","pagein","pageout","Total session time","Is Active","Registered Medical Council","User Ip"] for column in column_list: worksheet.write(0, col, column) col += 1 else: column_list = ["Userid","Name","Emailid","Mobile","Type","MCI","Specialization","Country","State","City","Pincode","Date","Video Watch time","Is Active","Registered Medical Council"] for column in column_list: worksheet.write(0, col, column) col += 1 row +=1 if datatype == "enrolled": crows = CourseEnrollment.objects.filter(course_id=cid) if "synapse" in course_id: for rows in crows: col = 0 try: assoc_user = User.objects.get(id=rows.user_id) user_ext = userdetails(assoc_user.id) worksheet.write(row, col, rows.user_id) col +=1 worksheet.write(row, col,getViewerName(rows.user_id)) col +=1 worksheet.write(row, col,assoc_user.email) col +=1 worksheet.write(row, col,user_ext.phone) col +=1 worksheet.write(row, col,user_ext.user_type) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.rcountry) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(rows.created)) col +=1 worksheet.write(row, col,"N/A") col +=1 worksheet.write(row, col,assoc_user.is_active) col +=1 worksheet.write(row, col,user_ext.user_extra_data) col +=1 except ObjectDoesNotExist: usernotfound = 0 row +=1 elif "SLNA" in course_id: for rows in crows: try: assoc_user = User.objects.get(id=rows.user_id) user_detail = getuserfullprofile(rows.user_id) user_ext = userdetails(assoc_user.id) if ( user_ext.user_extra_data != "" and "{" in user_ext.user_extra_data ): extd = ast.literal_eval(user_ext.user_extra_data) else: extd = {} ext = json.dumps(extd) ext = eval(ext) name = user_detail.name.split(" ") fname = name[0] if len(name) > 1: lname = name[1] else: lname = "NA" if ext.get("isdcode"): isdcode = ext["isdcode"] elif ext.get("country_code"): isdcode = ext.get("country_code") else: isdcode = "NA" if ext.get("placeofwork"): placeofwork = ext["placeofwork"] elif ext.get("place_of_work"): placeofwork = ext.get("place_of_work") else: placeofwork = "NA" profession = ext.get("profession") if profession: profession = ext["profession"] else: profession = "NA" col = 0 worksheet.write(row, col, rows.user_id) col +=1 worksheet.write(row, col, fname) col +=1 worksheet.write(row, col, lname) col +=1 worksheet.write(row, col, assoc_user.email) col +=1 worksheet.write(row, col, isdcode) col +=1 worksheet.write(row, col, user_ext.phone) col +=1 worksheet.write(row, col, user_ext.rcountry) col +=1 worksheet.write(row, col, user_ext.rcity) col +=1 worksheet.write(row, col, placeofwork) col +=1 worksheet.write(row, col, profession) col +=1 worksheet.write(row, col, str(rows.created)) col +=1 except ObjectDoesNotExist: usernotfound = 0 row +=1 else: for rows in crows: col = 0 try: assoc_user = User.objects.get(id=rows.user_id) user_ext = userdetails(assoc_user.id) worksheet.write(row, col,rows.user_id), col +=1 worksheet.write(row, col,getViewerName(rows.user_id)) col +=1 worksheet.write(row, col,getemail(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.phone) col +=1 worksheet.write(row, col,getusertype(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.rcountry) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(rows.created)) col +=1 worksheet.write(row, col,"N/A") col +=1 worksheet.write(row, col,assoc_user.is_active) col +=1 worksheet.write(row, col,user_ext.user_registered_medical_council) except ObjectDoesNotExist: usernotfound = 0 row +=1 elif datatype == "viewers": if (str(course_details.start) > "2021-03-01 15:00:00" ): if "SLNA" in course_id: webinar_time = int(course_exinfo.total_webinar_hours) vrows = ( user_session_tracking.objects.filter(course_id=cid,pagein__gte=course_details.start) .values("user_id", "course_id") .distinct() ) for vrow in vrows: userlogin = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"],pagein__gte=course_details.start ).first() userlogout = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"] ).last() assoc_user = User.objects.get(id=vrow["user_id"]) user_ext = userdetails(assoc_user.id) intime = userlogin.pagein.astimezone(timezone("Asia/Kolkata")) if userlogout.track_updated == 0: new_out_time = userlogout.pageout + datetime.timedelta( hours=webinar_time ) outime = new_out_time.astimezone(timezone("Asia/Kolkata")) total_time = str(new_out_time - userlogin.pagein) else: outime = userlogout.pageout.astimezone(timezone("Asia/Kolkata")) total_time = str(userlogout.pageout - userlogin.pagein) user_detail = getuserfullprofile(assoc_user.id) if '{' in user_ext.user_extra_data: extd = ast.literal_eval(user_ext.user_extra_data) ext = json.dumps(extd) ext = eval(ext) if ( user_ext.user_extra_data != "" and "{" in user_ext.user_extra_data ): extd = ast.literal_eval(user_ext.user_extra_data) else: extd = {} ext = json.dumps(extd) ext = eval(ext) else: ext = {} name = user_detail.name.split(" ") fname = name[0] if len(name) > 1: lname = name[1] else: lname = "NA" if ext.get("isdcode"): isdcode = ext["isdcode"] elif ext.get("country_code"): isdcode = ext.get("country_code") else: isdcode = "NA" if ext.get("placeofwork"): placeofwork = ext["placeofwork"] elif ext.get("place_of_work"): placeofwork = ext.get("place_of_work") else: placeofwork = "NA" profession = ext.get("profession") if profession: profession = ext["profession"] else: profession = "NA" col = 0 worksheet.write(row, col,vrow["user_id"]) col +=1 worksheet.write(row, col,fname) col +=1 worksheet.write(row, col,lname) col +=1 worksheet.write(row, col,assoc_user.email) col +=1 worksheet.write(row, col,isdcode) col +=1 worksheet.write(row, col,user_ext.phone) col +=1 worksheet.write(row, col,user_ext.rcountry) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,placeofwork) col +=1 worksheet.write(row, col,profession) col +=1 worksheet.write(row, col,intime.strftime("%b %d, %Y ")) col +=1 worksheet.write(row, col,intime.strftime("%H:%M")) col +=1 worksheet.write(row, col,outime.strftime("%b %d, %Y ")) col +=1 worksheet.write(row, col,outime.strftime("%H:%M")) col +=1 worksheet.write(row, col,total_time) row +=1 else: webinar_time = int(course_exinfo.total_webinar_hours) course_start = course_details.start + datetime.timedelta( hours=webinar_time ) vrows = ( user_session_tracking.objects.filter(course_id=cid,pagein__gte=course_details.start) .values("user_id", "course_id") .distinct() ) for vrow in vrows: user_exist = User.objects.filter(id=vrow["user_id"]) if user_exist: userlogin = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"],pagein__gte=course_details.start ).first() userlogout = user_session_tracking.objects.filter( course_id=vrow["course_id"], user_id=vrow["user_id"] ).last() assoc_user = User.objects.get(id=vrow["user_id"]) user_ext = userdetails(assoc_user.id) datetimeFormat = "%Y-%m-%d %H:%M:%S" intime = userlogin.pagein.astimezone(timezone("Asia/Kolkata")) if userlogout.track_updated == 0: new_out_time = userlogout.pageout + datetime.timedelta( hours=webinar_time ) outime = new_out_time.astimezone(timezone("Asia/Kolkata")) total_time = str(new_out_time - userlogin.pagein) else: outime = userlogout.pageout.astimezone(timezone("Asia/Kolkata")) total_time = str(userlogout.pageout - userlogin.pagein) col = 0 worksheet.write(row, col,getViewerName(vrow["user_id"])) col +=1 worksheet.write(row, col,getemail(vrow["user_id"])) col +=1 worksheet.write(row, col,user_ext.phone) col +=1 worksheet.write(row, col,getusertype(vrow["user_id"])) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(vrow["user_id"])) col +=1 worksheet.write(row, col,user_ext.rcountry) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,intime.strftime("%b %d, %Y %H:%M")) col +=1 worksheet.write(row, col,outime.strftime("%b %d, %Y %H:%M")) col +=1 worksheet.write(row, col,total_time.split(".")[0]) col +=1 worksheet.write(row, col,assoc_user.is_active) col +=1 worksheet.write(row, col,userlogout.user_ip) row +=1 else: vrows = ( StudentModule.objects.filter(course_id=cid, module_type="course") .values("student_id", "created", "state") .annotate(dcount=Count("student_id"))[:7000] ) # vrows = StudentModule.objects.filter(course_id=cid,module_type='sequential').values('student_id','created','state').distinct() for vrow in vrows: col = 0 # log.info(u'vrow-> %s',vrow['student_id']) assoc_user = User.objects.get(id=vrow["student_id"]) user_ext = userdetails(assoc_user.id) worksheet.write(row, col,vrow["student_id"]) col +=1 worksheet.write(row, col,getViewerName(vrow["student_id"])) col +=1 worksheet.write(row, col,getemail(vrow["student_id"])) col +=1 worksheet.write(row, col,user_ext.phone) col +=1 worksheet.write(row, col,getusertype(vrow["student_id"])) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(vrow["student_id"])) col +=1 worksheet.write(row, col,user_ext.rcountry) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(vrow["created"])) col +=1 worksheet.write(row, col,vrow["state"]) col +=1 worksheet.write(row, col,assoc_user.is_active) col +=1 worksheet.write(row, col,user_ext.user_extra_data) row +=1 else: if "synapse" in course_id: column_list = ["Name","Type","MCI","Specialization","State","City","Pincode","Date","Video Watch time","Is Active","IADVL"] for column in column_list: worksheet.write(0, col, column) col += 1 else: column_list = ["Name","Type","MCI","Specialization","State","City","Pincode","Date","Video Watch time","Is Active"] for column in column_list: worksheet.write(0, col, column) col += 1 row +=1 if datatype == "enrolled": crows = CourseEnrollment.objects.filter(course_id=cid) if "synapse" in course_id: for rows in crows: col = 0 assoc_user = User.objects.get(id=rows.user_id) user_ext = userdetails(assoc_user.id) worksheet.write(row, col,getViewerName(rows.user_id)) col +=1 worksheet.write(row, col,getusertype(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(rows.created)) col +=1 worksheet.write(row, col,"N/A") col +=1 worksheet.write(row, col,assoc_user.is_active) col +=1 worksheet.write(row, col,user_ext.user_extra_data) row +=1 else: for rows in crows: col = 0 assoc_user = User.objects.get(id=rows.user_id) user_ext = userdetails(assoc_user.id) worksheet.write(row, col,getViewerName(rows.user_id)) col +=1 worksheet.write(row, col,getusertype(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(rows.user_id)) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(rows.created)) col +=1 worksheet.write(row, col,"N/A") col +=1 worksheet.write(row, col,assoc_user.is_active) row +=1 elif datatype == "viewers": vrows = StudentModule.objects.filter(course_id=cid, module_type="course")[ :7000 ] for vrow in vrows: col = 0 assoc_user = User.objects.get(id=vrow.student_id) user_ext = userdetails(assoc_user.id) worksheet.write(row, col,getViewerName(vrow.student_id)) col +=1 worksheet.write(row, col,getusertype(vrow.student_id)) col +=1 worksheet.write(row, col,user_ext.reg_num) col +=1 worksheet.write(row, col,getspecialization(vrow.student_id)) col +=1 worksheet.write(row, col,user_ext.rstate) col +=1 worksheet.write(row, col,user_ext.rcity) col +=1 worksheet.write(row, col,user_ext.rpincode) col +=1 worksheet.write(row, col,str(vrow.created)) col +=1 worksheet.write(row, col,vrow.state) col +=1 worksheet.write(row, col,assoc_user.is_active) row +=1 workbook.close() with open(settings.MEDIA_ROOT +filename, 'rb') as model_excel: access_file = model_excel bucket_name = BUCKET_NAME +'/'+ 'course_access_report/' conn = boto.connect_s3(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) bucket = conn.get_bucket(BUCKET_NAME) imagedate = datetime.date.today() imagedate = imagedate.strftime('%d_%m_%Y') fs = FileSystemStorage() filenames = fs.save(workbook.filename, access_file) uploaded_file_url = fs.url(filenames) k = Key(bucket) course_overview = CourseOverview.objects.get(id=course_key) course_name = course_overview.display_name k.key =filename k.set_contents_from_filename(workbook.filename) k.make_public() imageurl = 'https://s3-ap-southeast-1.amazonaws.com/docmode-org-uploads/'+filename course_report_obj.status = "success" course_report_obj.file_path = imageurl course_report_obj.save() course_access_obj = CourseViewersReportLink(course_id=course_id,file_path=imageurl,file_name=filename) course_access_obj.save()
def canopi_user_registration(request): user = request.user user_profile = getuserfullprofile(request.user.id) user_extra_data = userdetails(request.user.id) log.info("userid-->%s", user.id) wallet_user = docmode_canopi_users.objects.filter(user_id=user.id) if wallet_user: return redirect("/wallet_dashboard") else: if request.is_ajax(): if request.method == "POST": if not 'check_phone_registered' in request.POST: authtoken = docmode_canopi_auth.objects.all().last() log.info('datetime-->%s,%s', authtoken.validity, authtoken) if authtoken.validity < datetime.datetime.now(UTC): auth = requests.request( "GET", "https://koa.docmode.org/api/v1/docmode/canopi_auth/" ) authtoken = docmode_canopi_auth.objects.all().last() log.info('auth-->%s', auth.json()) kitno = kitno_assgined_user.objects.filter( email="").first() log.info("kitno-->%s", kitno.kit_number) data = request.POST.dict() dob = data.get("dob").replace("/", "-") log.info("dob%s", dob) user_data = { "countryofIssue": "IND", "cardType": "V", "kitNo": kitno.kit_number, "title": data.get("title"), "firstName": data.get("fname"), "lastName": data.get("lname"), "gender": data.get("gender"), "specialDate": dob, "contactNo": data.get("phone"), "emailAddress": data.get("emailid"), "address": data.get("address1"), "address2": data.get("address2"), "city": data.get("city"), "state": data.get("state"), "country": data.get("country"), "pincode": data.get("pincode"), "idType": "PAN", "idNumber": data.get("aadhar"), "idExpiry": "2030-01-01", "kycStatus": "MIN_KYC", "countryCode": "+91", "otp": data.get("otp"), "addressDto": { "contactNo1": data.get("phone"), "contactNo2": "N/A", "emailAddress1": data.get("emailid"), "emailAddress2": "N/A", "notification": "1010", "address": [{ "title": "PERMANENT", "address1": data.get("address1"), "address2": data.get("address2"), "address3": "N/A", "city": data.get("city"), "state": data.get("state"), "country": data.get("country"), "pinCode": data.get("pincode") }] } } log.info("data--->%s", user_data) url = "https://ppi-test.canopi.in/canopi-payments/ppi/v1/customers/register" headers = { "Content-Type": "application/json", "Authorization": "Bearer " + str(authtoken) } response = requests.request("POST", url, json=user_data, headers=headers) response = response.json() log.info('response-->%s', response) if 'result' in response: if response['result'] is not None: log.info('response-->%s', response) docmode_canopi, created = docmode_canopi_users.objects.get_or_create( entityid=response["result"]["entityId"]) docmode_canopi.businessid = response["result"][ "sorCustomerId"] docmode_canopi.businesstype = "Customer" docmode_canopi.kitno = response["result"]["kitNo"] docmode_canopi.cardtype = "V" docmode_canopi.title = "Mr." docmode_canopi.idtype = "PAN" docmode_canopi.idnumber = data.get("aadhar") docmode_canopi.idexpiry = "N/A" docmode_canopi.countryofissue = "IND" docmode_canopi.programtype = "customer" docmode_canopi.country_code = "+91" docmode_canopi.otp = data.get("otp") docmode_canopi.user_id = request.user.id docmode_canopi.kycexpiry_date = response["result"][ "kycExpiryDate"] docmode_canopi.kyc_status = "MIN_KYC" docmode_canopi.address1 = data.get("address1") docmode_canopi.address2 = data.get("address2") docmode_canopi.address_title = "PERMANENT" docmode_canopi.contact1 = data.get("phone") docmode_canopi.email1 = user.email docmode_canopi.save() if docmode_canopi: log.info('docmode_canopi-->%s', docmode_canopi) kituserno = kitno_assgined_user.objects.get( kit_number=kitno.kit_number) log.info('kituserno-->%s', kitno.id) kituser = kitno_assgined_user.objects.get( id=kitno.id) kituser.email = data.get("emailid") kituser.save() log.info('kituser-->%s', kituser) return JsonResponse(response, status=200, safe=False) else: return JsonResponse(response, status=400) else: return JsonResponse(response, status=400) else: log.info('data--->%s', request.POST.dict()) data = request.POST.dict() phone_exist = docmode_canopi_users.objects.filter( contact1=data.get('phone')) if phone_exist: response = { "status": 200, "Msg": "This phone number is already registered!" } else: response = { "status": 400, "Msg": "This phone number is not registered!" } return JsonResponse(response, status=200, safe=False) #messages.success(request, "Kol registration successful.") context = { "errors": "welcome", "csrf": csrf(request)["csrf_token"], "profile": user_profile, "extra_data": user_extra_data } return render_to_response("canopi_wallet/user_registration.html", context)