diff --git a/FusionIIIT/Fusion/settings/common.py b/FusionIIIT/Fusion/settings/common.py index 67e7a8de1..531a6134d 100644 --- a/FusionIIIT/Fusion/settings/common.py +++ b/FusionIIIT/Fusion/settings/common.py @@ -261,8 +261,8 @@ os.path.join(BASE_DIR, "static"), ) -MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'media') MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') ACCOUNT_USERNAME_REQUIRED = False ACCOUNT_EMAIL_REQUIRED = True diff --git a/FusionIIIT/applications/globals/migrations/0002_auto_20230312_0952.py b/FusionIIIT/applications/globals/migrations/0002_auto_20230312_0952.py new file mode 100644 index 000000000..d8f1c7f59 --- /dev/null +++ b/FusionIIIT/applications/globals/migrations/0002_auto_20230312_0952.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.5 on 2023-03-12 09:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('globals', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='extrainfo', + name='user_status', + field=models.CharField(choices=[('NEW', 'NEW'), ('PRESENT', 'PRESENT')], default='PRESENT', max_length=50), + ), + ] diff --git a/FusionIIIT/applications/globals/migrations/0003_auto_20230313_1725.py b/FusionIIIT/applications/globals/migrations/0003_auto_20230313_1725.py new file mode 100644 index 000000000..484c60fac --- /dev/null +++ b/FusionIIIT/applications/globals/migrations/0003_auto_20230313_1725.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.5 on 2023-03-13 17:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('globals', '0002_auto_20230312_0952'), + ] + + operations = [ + migrations.AlterField( + model_name='extrainfo', + name='user_status', + field=models.CharField(choices=[('PRESENT', 'PRESENT'), ('NEW', 'NEW')], default='PRESENT', max_length=50), + ), + ] diff --git a/FusionIIIT/applications/globals/migrations/0004_auto_20230313_1733.py b/FusionIIIT/applications/globals/migrations/0004_auto_20230313_1733.py new file mode 100644 index 000000000..39cc66924 --- /dev/null +++ b/FusionIIIT/applications/globals/migrations/0004_auto_20230313_1733.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.5 on 2023-03-13 17:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('globals', '0003_auto_20230313_1725'), + ] + + operations = [ + migrations.AlterField( + model_name='extrainfo', + name='user_status', + field=models.CharField(choices=[('NEW', 'NEW'), ('PRESENT', 'PRESENT')], default='PRESENT', max_length=50), + ), + ] diff --git a/FusionIIIT/applications/online_cms/admin.py b/FusionIIIT/applications/online_cms/admin.py index 24679190f..9f2fde11f 100644 --- a/FusionIIIT/applications/online_cms/admin.py +++ b/FusionIIIT/applications/online_cms/admin.py @@ -2,13 +2,14 @@ from .models import (Assignment, CourseDocuments, CourseVideo, Forum, ForumReply, Quiz, QuizQuestion, QuizResult, StudentAnswer, - StudentAssignment, Topics,CourseSlide) + StudentAssignment1, Topics,CourseAssignment,CourseSlide) class QuizResultAdmin(admin.ModelAdmin): model = QuizResult raw_id_fields = ("student_id",) admin.site.register(CourseDocuments) +admin.site.register(CourseAssignment) admin.site.register(CourseSlide) admin.site.register(CourseVideo) @@ -22,7 +23,7 @@ class QuizResultAdmin(admin.ModelAdmin): admin.site.register(Assignment) -admin.site.register(StudentAssignment) +admin.site.register(StudentAssignment1) admin.site.register(QuizResult, QuizResultAdmin) diff --git a/FusionIIIT/applications/online_cms/forms.py b/FusionIIIT/applications/online_cms/forms.py index 802de9dbe..0c25ff451 100644 --- a/FusionIIIT/applications/online_cms/forms.py +++ b/FusionIIIT/applications/online_cms/forms.py @@ -124,4 +124,9 @@ class Meta: fields=['couse_id','doc'] # title = forms.CharField(max_length=50) - file = forms.FileField() \ No newline at end of file + file = forms.FileField() + + +class AssignmentMarks(forms.Form): + marks=forms.IntegerField() + feedback=forms.CharField(max_length=255) diff --git a/FusionIIIT/applications/online_cms/migrations/0002_courseassignment_courseslide.py b/FusionIIIT/applications/online_cms/migrations/0002_courseassignment_courseslide.py new file mode 100644 index 000000000..991e9003c --- /dev/null +++ b/FusionIIIT/applications/online_cms/migrations/0002_courseassignment_courseslide.py @@ -0,0 +1,38 @@ +# Generated by Django 3.1.5 on 2023-03-12 09:52 + +import applications.online_cms.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('academic_information', '0001_initial'), + ('online_cms', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='CourseSlide', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('upload_time', models.DateTimeField(auto_now=True)), + ('document_name', models.CharField(max_length=40)), + ('description', models.CharField(max_length=100)), + ('doc', models.FileField(blank=True, null=True, upload_to=applications.online_cms.models.content_file_name)), + ('course_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='academic_information.course')), + ], + ), + migrations.CreateModel( + name='CourseAssignment', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('upload_time', models.DateTimeField(auto_now=True)), + ('submit_date', models.DateTimeField()), + ('assignment_name', models.CharField(max_length=100)), + ('doc', models.FileField(blank=True, null=True, upload_to=applications.online_cms.models.assignment_file_name)), + ('course_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='academic_information.course')), + ], + ), + ] diff --git a/FusionIIIT/applications/online_cms/migrations/0003_auto_20230313_1635.py b/FusionIIIT/applications/online_cms/migrations/0003_auto_20230313_1635.py new file mode 100644 index 000000000..49fe7301a --- /dev/null +++ b/FusionIIIT/applications/online_cms/migrations/0003_auto_20230313_1635.py @@ -0,0 +1,29 @@ +# Generated by Django 3.1.5 on 2023-03-13 16:35 + +import applications.online_cms.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('online_cms', '0002_courseassignment_courseslide'), + ] + + operations = [ + migrations.RemoveField( + model_name='studentassignment', + name='upload_url', + ), + migrations.AddField( + model_name='studentassignment', + name='doc', + field=models.FileField(blank=True, null=True, upload_to=applications.online_cms.models.assignment_submit_name), + ), + migrations.AlterField( + model_name='studentassignment', + name='assignment_id', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='online_cms.courseassignment'), + ), + ] diff --git a/FusionIIIT/applications/online_cms/migrations/0004_auto_20230313_1639.py b/FusionIIIT/applications/online_cms/migrations/0004_auto_20230313_1639.py new file mode 100644 index 000000000..5477a294a --- /dev/null +++ b/FusionIIIT/applications/online_cms/migrations/0004_auto_20230313_1639.py @@ -0,0 +1,32 @@ +# Generated by Django 3.1.5 on 2023-03-13 16:39 + +import applications.online_cms.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('academic_information', '0001_initial'), + ('online_cms', '0003_auto_20230313_1635'), + ] + + operations = [ + migrations.CreateModel( + name='StudentAssignment1', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('upload_time', models.DateTimeField(auto_now=True)), + ('doc', models.FileField(blank=True, null=True, upload_to=applications.online_cms.models.assignment_submit_name)), + ('score', models.IntegerField(null=True)), + ('feedback', models.CharField(max_length=100, null=True)), + ('assign_name', models.CharField(max_length=100)), + ('assignment_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='online_cms.courseassignment')), + ('student_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='academic_information.student')), + ], + ), + migrations.DeleteModel( + name='StudentAssignment', + ), + ] diff --git a/FusionIIIT/applications/online_cms/migrations/0005_studentassignment1_course_code.py b/FusionIIIT/applications/online_cms/migrations/0005_studentassignment1_course_code.py new file mode 100644 index 000000000..65fd4fe2f --- /dev/null +++ b/FusionIIIT/applications/online_cms/migrations/0005_studentassignment1_course_code.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1.5 on 2023-03-13 17:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('online_cms', '0004_auto_20230313_1639'), + ] + + operations = [ + migrations.AddField( + model_name='studentassignment1', + name='course_code', + field=models.CharField(default='CS416e', max_length=100), + preserve_default=False, + ), + ] diff --git a/FusionIIIT/applications/online_cms/models.py b/FusionIIIT/applications/online_cms/models.py index fe8dce565..803ef9f06 100644 --- a/FusionIIIT/applications/online_cms/models.py +++ b/FusionIIIT/applications/online_cms/models.py @@ -14,7 +14,7 @@ def content_file_name(instance, filename): file_path = 'online_cms/{course_id}/doc/{fileName}.{ext}'.format( course_id=course_code, fileName=instance.document_name, ext=ext) return file_path -#the documents in the course (slides , ppt) added by the faculty and can be downloaded by the students +# the documents in the course (slides , ppt) added by the faculty and can be downloaded by the students class CourseSlide(models.Model): course_id = models.ForeignKey(Course, on_delete=models.CASCADE) upload_time = models.DateTimeField(auto_now=True) @@ -29,7 +29,7 @@ class CourseDocuments(models.Model): upload_time = models.DateTimeField(auto_now=True) description = models.CharField(max_length=100) document_name = models.CharField(max_length=40) - document_url = models.CharField(max_length=500, null=True,blank=True) + document_url = models.CharField(max_length=100, null=True,blank=True) # media = models.FileField(upload_to=content_file_name, null=True, blank=True) def __str__(self): @@ -187,11 +187,37 @@ def __str__(self): return '{} - {} - {}'.format(self.pk, self.course_id, self.assignment_name) #details of the solution uploaded by the student -class StudentAssignment(models.Model): +def assignment_submit_name(instance, filename): + name, ext = filename.split('.') + # obj=Curriculum.objects.get(course_id=instance.course_id) + course_code=instance.course_code + assignmentName=instance.assignment_id.assignment_name + file_path = 'online_cms/{course_id}/assi/{assignmentName}/{fileName}.{ext}'.format( + course_id=course_code,assignmentName=assignmentName, fileName=name, ext=ext) + return file_path +# class StudentAssignment(models.Model): +# student_id = models.ForeignKey(Student, on_delete=models.CASCADE) +# assignment_id = models.ForeignKey(CourseAssignment, on_delete=models.CASCADE) +# upload_time = models.DateTimeField(auto_now=True) +# # upload_url = models.TextField(max_length=200) +# doc = models.FileField(upload_to=assignment_submit_name, null=True, blank=True) +# score = models.IntegerField(null=True) #score is submitted by faculty +# feedback = models.CharField(max_length=100, null=True) #feedback by the faculty for the solution of the assignment submitted +# assign_name = models.CharField(max_length=100) + +# def __str__(self): +# return '{} - {} - {} - {} - {}'.format( +# self.pk, self.student_id, +# self.assignment_id, self.score, +# self.feedback) + +class StudentAssignment1(models.Model): student_id = models.ForeignKey(Student, on_delete=models.CASCADE) - assignment_id = models.ForeignKey(Assignment, on_delete=models.CASCADE) + assignment_id = models.ForeignKey(CourseAssignment, on_delete=models.CASCADE) upload_time = models.DateTimeField(auto_now=True) - upload_url = models.TextField(max_length=200) + # upload_url = models.TextField(max_length=200) + course_code=models.CharField(max_length=100) + doc = models.FileField(upload_to=assignment_submit_name, null=True, blank=True) score = models.IntegerField(null=True) #score is submitted by faculty feedback = models.CharField(max_length=100, null=True) #feedback by the faculty for the solution of the assignment submitted assign_name = models.CharField(max_length=100) diff --git a/FusionIIIT/applications/online_cms/urls.py b/FusionIIIT/applications/online_cms/urls.py index a15cc3029..07e5d178c 100644 --- a/FusionIIIT/applications/online_cms/urls.py +++ b/FusionIIIT/applications/online_cms/urls.py @@ -70,6 +70,8 @@ url(r'^(?P[A-z]+[0-9]+[A-z]?)/edit_bank/(?P[0-9]+)$', views.edit_bank, name='edit_bank'), url(r'^(?P[A-z]+[0-9]+[A-z]?)/attendance$', views.submit_attendance, - name='submit_attendance'),] + name='submit_attendance'), + url(r'^(?P[A-z]+[0-9]+[A-z]?)/edit-assignment-marks$', views.edit_assignment_marks, + name='assignment_marks'), ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/FusionIIIT/applications/online_cms/views.py b/FusionIIIT/applications/online_cms/views.py index 7f60b9363..0c4184c35 100644 --- a/FusionIIIT/applications/online_cms/views.py +++ b/FusionIIIT/applications/online_cms/views.py @@ -25,6 +25,8 @@ # from .helpers import create_thumbnail, semester from .models import * from .helpers import create_thumbnail, semester +from django.shortcuts import HttpResponseRedirect +from django.urls import reverse @login_required @@ -43,6 +45,10 @@ def viewcourses(request): print(register) # serializer=OCMSStudentSerializer(register,many=True) + courses = [] #courses in which student is registerd + print(register) + # serializer=OCMSStudentSerializer(register,many=True) + for reg in register: #info of the courses course={} course['data']=reg.curr_id @@ -173,13 +179,12 @@ def course(request, course_code): # videos.append(video_data) # print(videos) - - slides = CourseDocuments.objects.select_related().filter(course_id=course) + slides = CourseSlide.objects.select_related().filter(course_id=course) quiz = Quiz.objects.select_related().filter(course_id=course) - assignment = Assignment.objects.select_related().filter(course_id=course) + assignment = CourseAssignment.objects.select_related().filter(course_id=course) student_assignment = [] for assi in assignment: - sa = StudentAssignment.objects.select_related().filter(assignment_id=assi, student_id=student) + sa = StudentAssignment1.objects.select_related().filter(assignment_id=assi, student_id=student) student_assignment.append(sa) ''' marks to store the marks of quizes of student @@ -264,7 +269,7 @@ def course(request, course_code): # playlist_url = "https://www.googleapis.com/youtube/v3/playlistItems" # videos_url = "https://www.googleapis.com/youtube/v3/videos" - # videos_list = [] + videos_list = [] # channel_params = { # 'part': 'contentDetails', # # 'forUsername': 'TechGuyWeb', @@ -294,31 +299,25 @@ def course(request, course_code): # v = requests.get(videos_url, params=videos_params) # results2 = v.json()['items'] - # videos = [] + videos = [] # for res in results2: # video_data = { # 'id': res['id'], # 'title': res['snippet']['title'], # } - # videos.append(video_data) - # if request.method == 'POST': - # form = UploadSlideForm(request.POST, request.FILES) - # if form.is_valid(): - # tempform=form.save(commit=False) - # tempform.course_id=course - # tempform.save() - videos=[] - slides1=CourseSlide.objects.select_related().filter(course_id=course) - slides = CourseDocuments.objects.select_related().filter(course_id=course) + # videos.append(video_data) + slides1 = CourseSlide.objects.select_related().filter(course_id=course) + slides=None quiz = Quiz.objects.select_related().filter(course_id=course) marks = [] quizs = [] assignment = Assignment.objects.select_related().filter(course_id=course) assignment1 = CourseAssignment.objects.select_related().filter(course_id=course) student_assignment = [] - for assi in assignment: - sa = StudentAssignment.objects.select_related().filter(assignment_id=assi) + for assi in assignment1: + sa = StudentAssignment1.objects.select_related().filter(assignment_id=assi) + print("hii",sa) student_assignment.append(sa) for q in quiz: qs = QuizResult.objects.select_related().filter(quiz_id=q) @@ -370,28 +369,41 @@ def upload_assignment(request, course_code): doc = request.FILES.get('img') #the images in the assignment assi_name = request.POST.get('assignment_topic') name = request.POST.get('name') - assign = Assignment.objects.get(pk=assi_name) + assign = CourseAssignment.objects.get(pk=assi_name) filename, file_extenstion = os.path.splitext(request.FILES.get('img').name) except: return HttpResponse("Please fill each and every field correctly!") filename = name - full_path = settings.MEDIA_ROOT + "/online_cms/" + course_code + "/assi/" #storing the media files - full_path = full_path + assign.assignment_name + "/" + student.id.id + "/" - url = settings.MEDIA_URL + filename - if not os.path.isdir(full_path): - cmd = "mkdir " + full_path - subprocess.call(cmd, shell=True) - fs = FileSystemStorage(full_path, url) - fs.save(name + file_extenstion, doc) #saving the media files - uploaded_file_url = full_path+ "/" + name + file_extenstion + # full_path = settings.MEDIA_ROOT + "/online_cms/" + course_code + "/assi/" #storing the media files + # full_path = full_path + assign.assignment_name + "/" + student.id.id + "/" + # url = settings.MEDIA_URL + filename + # if not os.path.isdir(full_path): + # cmd = "mkdir " + full_path + # subprocess.call(cmd, shell=True) + # fs = FileSystemStorage(full_path, url) + # fs.save(name + file_extenstion, doc) #saving the media files + # uploaded_file_url = full_path+ "/" + name + file_extenstion # to save the solution of assignment the database - sa = StudentAssignment( - student_id=student, - assignment_id=assign, - upload_url=uploaded_file_url, - assign_name=name+file_extenstion + StudentAssignment1.objects.create( + student_id=student, + doc=doc, + assignment_id=assign, + course_code=course_code, + assign_name=name+file_extenstion + # upload_time=datetime.datetime.now(), + # description=description, + # document_name=name, + # doc=doc ) - sa.save() + # sa = StudentAssignment( + # student_id=student, + # assignment_id=assign, + # upload_url=uploaded_file_url, + # assign_name=name+file_extenstion + # ) + # sa.save() + + return HttpResponse("Upload successful.") else: return HttpResponse("not found") @@ -474,17 +486,17 @@ def delete(request, course_code): video.delete() #to delete slides/documents elif data_type == 'slide': - slide = CourseDocuments.objects.select_related().get(pk=pk, course_id=course) + slide = CourseSlide.objects.select_related().get(pk=pk, course_id=course) path = slide.document_url slide.delete() #to delete the submitted assignment elif data_type == 'stuassignment': - stu_assi = StudentAssignment.objects.select_related().get(pk=pk) + stu_assi = StudentAssignment1.objects.select_related().get(pk=pk) path = stu_assi.upload_url stu_assi.delete() #to delete the assignment uploaded by faculty elif data_type == 'lecassignment': - lec_assi = Assignment.objects.select_related().get(pk=pk) + lec_assi = CourseAssignment.objects.select_related().get(pk=pk) path = lec_assi.assignment_url lec_assi.delete() cmd = "rm "+path @@ -670,16 +682,16 @@ def add_assignment(request, course_code): #from faculty side except: return HttpResponse("Please Enter The Form Properly") filename = name - full_path = settings.MEDIA_ROOT + "/online_cms/" + course_code + "/assi/" + name + "/" - print(full_path) - url = settings.MEDIA_URL + filename - if not os.path.isdir(full_path): - cmd = "mkdir " + full_path - subprocess.call(cmd, shell=True) - fs = FileSystemStorage(full_path, url) - fs.save(filename+file_extenstion, assi) - uploaded_file_url = full_path + filename + file_extenstion - print(uploaded_file_url) + # full_path = settings.MEDIA_ROOT + "/online_cms/" + course_code + "/assi/" + name + "/" + # print(full_path) + # url = settings.MEDIA_URL + filename + # if not os.path.isdir(full_path): + # cmd = "mkdir " + full_path + # subprocess.call(cmd, shell=True) + # fs = FileSystemStorage(full_path, url) + # fs.save(filename+file_extenstion, assi) + # uploaded_file_url = full_path + filename + file_extenstion + # print(uploaded_file_url) CourseAssignment.objects.create( course_id=course, submit_date=request.POST.get('myDate'), @@ -697,6 +709,24 @@ def add_assignment(request, course_code): #from faculty side else: return HttpResponse("not found") +@login_required +def edit_assignment_marks(request,*args, **kwargs): + if request.method=='POST': + print("hiii") + form=AssignmentMarks(request.POST) + if form.is_valid(): + sa=StudentAssignment1.objects.get(pk=int(request.POST['assignmentid'][0])) + # print() + sa.score=form.cleaned_data['marks'] + sa.feedback=form.cleaned_data['feedback'] + sa.save() + # print(sa.course_code) + course_code = sa.course_code + # url = reverse('course', args=[course_code]) + return HttpResponse("Marks Updated!") + # return redirect(course,course_code='CS416e') + return HttpResponse("Error Occured!") + @login_required def edit_bank(request, course_code, qb_code): diff --git a/FusionIIIT/templates/coursemanagement/assessment.html b/FusionIIIT/templates/coursemanagement/assessment.html index 41a7954e9..a0b14cb11 100644 --- a/FusionIIIT/templates/coursemanagement/assessment.html +++ b/FusionIIIT/templates/coursemanagement/assessment.html @@ -11,11 +11,11 @@

{{course.course_name}}

- {% for assi in assignment %} + {% for assi in assignment1 %}
@@ -43,21 +43,35 @@

- - +
+ {{sa.pk}} + +
+ + + + {% comment %}
+
{% endcomment %} + {% comment %}
+ +
{% endcomment %} + - + {% comment %} {% endcomment %} - {% endif %} + {% comment %} {% endif %} {% endcomment %} {% endfor %} {% endif %} {% endfor %} diff --git a/FusionIIIT/templates/coursemanagement/viewcourse.html b/FusionIIIT/templates/coursemanagement/viewcourse.html index 44f1d9fb8..7e452c3f3 100644 --- a/FusionIIIT/templates/coursemanagement/viewcourse.html +++ b/FusionIIIT/templates/coursemanagement/viewcourse.html @@ -74,7 +74,7 @@

{{course.course_name}}

-
+
-
- {% endfor %} @@ -352,7 +358,7 @@

{{course.course_name}}

diff --git a/FusionIIIT/templates/coursemanagement/viewperformance.html b/FusionIIIT/templates/coursemanagement/viewperformance.html index 386b6a9af..4a6f2635b 100644 --- a/FusionIIIT/templates/coursemanagement/viewperformance.html +++ b/FusionIIIT/templates/coursemanagement/viewperformance.html @@ -59,13 +59,14 @@

You didn't submit any assignment

{% endif %} {% else %}

Results

- {% if assignment|length %} + {% if assignment1|length %} - {% for assi in assignment %} + {% for assi in assignment1 %}
-
-
- + +
+
+
+ {%csrf_token%} +
+ {% comment %} {% endcomment %} + +
- -
-
- +
+
+ {% comment %} {% endcomment %} + +
-
-
- Download - {% if sa.score %} {{sa.score}} @@ -85,7 +99,7 @@

-
+ {% comment %} {% csrf_token %}
@@ -124,7 +138,7 @@

-
+ {% endcomment %}
{% endblock %} diff --git a/FusionIIIT/templates/coursemanagement/submitassignments.html b/FusionIIIT/templates/coursemanagement/submitassignments.html index 945a74ffc..f926cba13 100644 --- a/FusionIIIT/templates/coursemanagement/submitassignments.html +++ b/FusionIIIT/templates/coursemanagement/submitassignments.html @@ -2,12 +2,12 @@ - + {% endcomment %} {% if Lecturer == 0 %}

{{assi.assignment_name}}
{{forloop.counter}} {{assi.assignment_name}} {{assi.submit_date}}
+