Commit e38b1d175399e87d78f6f857f17ab7c109418e44
Exists in
master
and in
5 other branches
Merge branch 'dev' of https://github.com/amadeusproject/amadeuslms into dev
Showing
8 changed files
with
52 additions
and
209 deletions
Show diff stats
core/static/css/base/amadeus.css
| ... | ... | @@ -276,7 +276,7 @@ a.alert_message:hover{color : grey} |
| 276 | 276 | |
| 277 | 277 | /*Logo register user*/ |
| 278 | 278 | #logo{ |
| 279 | - max-width: 30%; | |
| 279 | + max-width: 40%; | |
| 280 | 280 | margin-top: 1em; |
| 281 | 281 | margin-bottom: 1em; |
| 282 | 282 | } |
| ... | ... | @@ -337,4 +337,11 @@ ul, li { |
| 337 | 337 | |
| 338 | 338 | .icon_edit_remove{ |
| 339 | 339 | float: right; |
| 340 | -} | |
| 341 | 340 | \ No newline at end of file |
| 341 | +} | |
| 342 | + | |
| 343 | + | |
| 344 | +/* core/index.html classes*/ | |
| 345 | + | |
| 346 | +.logo-login{ | |
| 347 | + margin-top: 15px; | |
| 348 | + margin-bottom: 15px; | |
| 342 | 349 | \ No newline at end of file | ... | ... |
core/static/css/base/header.css
core/templates/create_account.html
| ... | ... | @@ -1,180 +0,0 @@ |
| 1 | -<!DOCTYPE html> | |
| 2 | -{% load static %} | |
| 3 | -<!-- | |
| 4 | -Copyright 2008, 2009 UFPE - Universidade Federal de Pernambuco | |
| 5 | - | |
| 6 | -Este arquivo é parte do programa Amadeus Sistema de Gestão de Aprendizagem, ou simplesmente Amadeus LMS | |
| 7 | - | |
| 8 | -O Amadeus LMS é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como | |
| 9 | -publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença. | |
| 10 | - | |
| 11 | -Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
| 12 | - | |
| 13 | -Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 14 | ---> | |
| 15 | - | |
| 16 | - | |
| 17 | - | |
| 18 | - | |
| 19 | - | |
| 20 | - | |
| 21 | - | |
| 22 | -<html> | |
| 23 | -<head> | |
| 24 | - <!-- | |
| 25 | -Copyright 2008, 2009 UFPE - Universidade Federal de Pernambuco | |
| 26 | - | |
| 27 | -Este arquivo é parte do programa Amadeus Sistema de Gestão de Aprendizagem, ou simplesmente Amadeus LMS | |
| 28 | - | |
| 29 | -O Amadeus LMS é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como | |
| 30 | -publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença. | |
| 31 | - | |
| 32 | -Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
| 33 | - | |
| 34 | -Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 35 | ---> | |
| 36 | - | |
| 37 | - | |
| 38 | - | |
| 39 | - | |
| 40 | - <title>Projeto Amadeus</title> | |
| 41 | - | |
| 42 | - <meta http-equiv="Cache-Control" content="no-cache, no-store" /> | |
| 43 | - | |
| 44 | - <link href="{% static 'css/css.css' %}" rel="stylesheet" type="text/css" /> | |
| 45 | - <link href="{% static 'css/amadeus.css' %}" rel="stylesheet" type="text/css" /> | |
| 46 | - <link href="{% static 'css/content_management.css' %}" rel="stylesheet" type="text/css" /> | |
| 47 | - <link href="{% static 'css/jqueryui/smoothness/jquery-ui-1.7.1.custom.css' %}" rel="stylesheet" type="text/css" /> | |
| 48 | - | |
| 49 | - <script type='text/javascript' src='dwr/interface/UtilDWR.js'></script> | |
| 50 | - <script type='text/javascript' src='dwr/engine.js'></script> | |
| 51 | - <script type='text/javascript' src='dwr/util.js'></script> | |
| 52 | - <script type="text/javascript" src="{% static 'js/jqueryui/jquery-1.3.2.min.js' %}"></script> | |
| 53 | - <script type="text/javascript" src="{% static 'js/jqueryui/jquery-ui-1.7.1.custom.min.js' %}"></script> | |
| 54 | - <script type="text/javascript" src="{% static 'js/openid.js' %}"></script> | |
| 55 | - <script type="text/javascript" src="{% static 'js/amadeus.js' %}"></script> | |
| 56 | -</head> | |
| 57 | -<body> | |
| 58 | - <div id="pBody" class="pBody"> | |
| 59 | - <div id="pHeader" class="pHeader"> | |
| 60 | - <div id="login"> | |
| 61 | - <dl id="formlogin"> | |
| 62 | - <form name="logonForm" method="post" action="/amadeuslms/validateLogin.do"> | |
| 63 | - <dt><input type="text" name="login" maxlength="15" size="15" value="" class="inputlogin"> </dt> | |
| 64 | - <dt><input type="password" name="password" maxlength="15" size="15" value="" class="inputlogin"> <br /><a href="" name="logonForm" class="button">Entrar</a></dt> | |
| 65 | - </form> | |
| 66 | -<script type="text/javascript" language="JavaScript"> | |
| 67 | - <!-- | |
| 68 | - var focusControl = document.forms["logonForm"].elements["login"]; | |
| 69 | - | |
| 70 | - if (focusControl.type != "hidden" && !focusControl.disabled) { | |
| 71 | - focusControl.focus(); | |
| 72 | - } | |
| 73 | - // --> | |
| 74 | -</script> | |
| 75 | - | |
| 76 | - </dl> | |
| 77 | - </div> | |
| 78 | - </div> | |
| 79 | - <!-- | |
| 80 | -Copyright 2008, 2009 UFPE - Universidade Federal de Pernambuco | |
| 81 | - | |
| 82 | -Este arquivo é parte do programa Amadeus Sistema de Gestão de Aprendizagem, ou simplesmente Amadeus LMS | |
| 83 | - | |
| 84 | -O Amadeus LMS é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como | |
| 85 | -publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença. | |
| 86 | - | |
| 87 | -Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
| 88 | - | |
| 89 | -Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 90 | ---> | |
| 91 | - | |
| 92 | - | |
| 93 | - | |
| 94 | - | |
| 95 | - | |
| 96 | - | |
| 97 | - | |
| 98 | -<div id="institutional_menu"> | |
| 99 | - | |
| 100 | - <span><a href="/amadeuslms/fProject.do" target="_blank">O Projeto</a></span> | |
| 101 | - <span> | </span> | |
| 102 | - <span><a href="/amadeuslms/fCCTE.do" target="_blank">Grupo CCTE</a></span> | |
| 103 | -</div> | |
| 104 | - <div id="pTitle" class="pTitle"> | |
| 105 | - <h2>Nova conta</h2> | |
| 106 | - </div> | |
| 107 | - <div id="pBreadCrumbs" class="pBreadCrumbs"> | |
| 108 | - <ul id="breadcrumb"> | |
| 109 | - <li><a href="">Página Inicial</a></li> | |
| 110 | - <li>Nova conta</li> | |
| 111 | - </ul> | |
| 112 | - </div> | |
| 113 | - <div id="pLeftMenu" class="pLeftMenu"> | |
| 114 | - <div id="side_menu_1"> | |
| 115 | - <ul id="menu_sessoes"> | |
| 116 | - <li><a href="" class="insert">Lembrar senha</a></li> | |
| 117 | - </ul> | |
| 118 | - </div> | |
| 119 | - </div> | |
| 120 | - <div id="pContent" class="pContent"> | |
| 121 | - <dl class="insert2"> | |
| 122 | - <form name="formUserRegister" method="post" action="/amadeuslms/insertUser.do"> | |
| 123 | - | |
| 124 | - <dt>Nome completo</dt> | |
| 125 | - <dd class="field"><input type="text" name="name" value="" class="formfield" id="realname"></dd> | |
| 126 | - <dd class="description">Seu nome completo</dd> | |
| 127 | - <dt>E-mail</dt> | |
| 128 | - <dd class="field"><input type="text" name="email" value="" class="formfield" id="mail"></dd> | |
| 129 | - <dd class="description">Seu endereço de e-mail (exemplo@mail.com)</dd> | |
| 130 | - <dt>Login</dt> | |
| 131 | - <dd class="field"><input type="text" name="login" maxlength="15" size="15" value="" class="formfield" id="username"></dd> | |
| 132 | - <dd class="description">Seu login</dd> | |
| 133 | - <dt>Senha</dt> | |
| 134 | - <dd class="field"><input type="password" name="password" maxlength="15" size="15" value="" class="formfield" id="password"></dd> | |
| 135 | - <dd class="description">Sua senha (mínimo de 4 caracteres)</dd> | |
| 136 | - <dt>Confirmação de senha</dt> | |
| 137 | - <dd class="field"><input type="password" name="passwordConfirmation" maxlength="15" size="15" value="" class="formfield" id="passwordConfirmation"></dd> | |
| 138 | - <dd class="description">Confirme sua senha</dd> | |
| 139 | - <dt class="field"><input type="submit" name="insertUser" value="Cadastrar" class="button"></dt> | |
| 140 | - <br/><br/><ul id="required"><li>Todos os campos são de preenchimento obrigatório</li></ul> | |
| 141 | - </form> | |
| 142 | -<script type="text/javascript" language="JavaScript"> | |
| 143 | - <!-- | |
| 144 | - var focusControl = document.forms["formUserRegister"].elements["name"]; | |
| 145 | - | |
| 146 | - if (focusControl.type != "hidden" && !focusControl.disabled) { | |
| 147 | - focusControl.focus(); | |
| 148 | - } | |
| 149 | - // --> | |
| 150 | -</script> | |
| 151 | - | |
| 152 | - </dl> | |
| 153 | - </div> | |
| 154 | - <div id="pRightMenu" class="pRightMenu"> | |
| 155 | - | |
| 156 | - </div> | |
| 157 | - <!-- | |
| 158 | -Copyright 2008, 2009 UFPE - Universidade Federal de Pernambuco | |
| 159 | - | |
| 160 | -Este arquivo é parte do programa Amadeus Sistema de Gestão de Aprendizagem, ou simplesmente Amadeus LMS | |
| 161 | - | |
| 162 | -O Amadeus LMS é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como | |
| 163 | -publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença. | |
| 164 | - | |
| 165 | -Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
| 166 | - | |
| 167 | -Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| 168 | ---> | |
| 169 | - | |
| 170 | - | |
| 171 | - | |
| 172 | - | |
| 173 | - | |
| 174 | -<div id="footnote"> | |
| 175 | - <dl><dd>Copyright Amadeus. Todos os direitos reservados<dd></dl> | |
| 176 | -</div> | |
| 177 | - | |
| 178 | - </div> | |
| 179 | -</body> | |
| 180 | -</html> |
core/templates/index.html
| ... | ... | @@ -10,20 +10,19 @@ |
| 10 | 10 | {% endblock sidebar %} |
| 11 | 11 | |
| 12 | 12 | {% block content %} |
| 13 | - <div class="row"> | |
| 14 | - <div class="col-sm-4 col-sm-offset-4 col-md-4 col-md-offset-4 col-xs-4 col-xs-offset-4 col-lg-4 col-lg-offset-4 col-xl-4 col-xl-offset-4"> | |
| 15 | - <div class="row"> | |
| 16 | - <div class="col-sm-8 col-sm-offset-2 col-md-offset-2 col-md-8 col-xs-8 col-xs-offset-2 col-lg-offset-2 col-lg-8 col-xl-offset-2 col-xl-8"> | |
| 17 | - </br> | |
| 18 | - </br> | |
| 19 | - <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block " alt="logo amadeus"> | |
| 20 | - </br> | |
| 21 | - </div> | |
| 13 | + <div class="row"> | |
| 14 | + <div class="col-sm-4 col-sm-offset-3 col-md-4 col-md-offset-3 | |
| 15 | + col-xs-4 col-xs-offset-3 col-lg-4 col-lg-offset-3 col-xl-4 col-xl-offset-3 "> | |
| 16 | + <div class="col-sm-8 col-sm-offset-2 col-md-8 col-md-offset-2 col-xs-8 col-xs-offset-2 col-lg-8 col-lg-offset-2 col-xl-8 col-xl-offset-2"> | |
| 17 | + | |
| 18 | + <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block logo-login " alt="logo amadeus"> | |
| 19 | + | |
| 20 | + </div> | |
| 22 | 21 | </div> |
| 23 | 22 | </div> |
| 24 | 23 | |
| 25 | - <div class="row "> | |
| 26 | - <div class="col-md-8 col-md-offset-2 col-sm-8 col-sm-offset-2 col-xs-8 col-xs-offset-2 col-lg-8 col-lg-offset-2 col-xl-8 col-xl-offset-2"> | |
| 24 | + <div class="row"> | |
| 25 | + <div class="col-md-6 col-sm-6 col-sm-offset-2 col-xs-6 col-xs-offset-2 col-lg-6 col-lg-offset-2 col-xl-6 col-xl-offset-2"> | |
| 27 | 26 | {% if messages %} |
| 28 | 27 | {% for message in messages %} |
| 29 | 28 | <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> |
| ... | ... | @@ -61,21 +60,18 @@ |
| 61 | 60 | <div class="col-md-10 col-sm-10 col-xs-10 col-lg-10"> |
| 62 | 61 | <a href="{% url 'core:password_reset' %}">{% trans "Forgot your password?" %}</a> |
| 63 | 62 | </div> |
| 64 | - {# </div> #} | |
| 65 | - {# <div class="row"> #} | |
| 66 | 63 | <div class="col-md-6 col-xs-6 col-sm-6 col-lg-6 text-center"> |
| 67 | 64 | <a class="btn btn-flat" href="{% url 'core:guest' %}" formaction="#" style="position: initial;">{% trans 'Guest' %}</a> |
| 68 | 65 | </div> |
| 69 | 66 | <div class="col-md-6 col-xs-6 col-sm-6 col-lg-6 text-center"> |
| 70 | 67 | <button type="submite" class="btn btn-flat btn-success" form="form-login" style="position: initial;">{% trans 'Login' %}</button> |
| 71 | 68 | </div> |
| 72 | - {# </div> #} | |
| 73 | 69 | </div> |
| 74 | 70 | </div> |
| 75 | 71 | <a class="btn btn-raised btn-primary btn-block" href="{% url 'core:register' %}">{% trans 'Sign Up' %} </a> |
| 76 | 72 | </div> |
| 77 | 73 | </div> |
| 78 | - </div> | |
| 74 | + | |
| 79 | 75 | {% endblock%} |
| 80 | 76 | |
| 81 | 77 | ... | ... |
core/templates/register_user.html
| ... | ... | @@ -18,14 +18,16 @@ |
| 18 | 18 | </div> |
| 19 | 19 | {% endfor %} |
| 20 | 20 | {% endif %} |
| 21 | - <div class="row logo-row"> | |
| 22 | - <div class="col-lg-offset-2 col-lg-9"> | |
| 21 | + <div class="row"> | |
| 22 | + <div class="col-lg-offset-2 col-lg-8 col-md-offset-2 col-md-8 col-xs-offset-2 col-xs-8 col-sm-offset-2 col-sm-8"> | |
| 23 | + <div class="col-lg-8 col-md-8 col-xs-8 col-sm-8"> | |
| 23 | 24 | <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block " alt="logo amadeus" id="logo"> |
| 25 | + </div> | |
| 24 | 26 | </div> |
| 25 | 27 | </div> |
| 26 | 28 | |
| 27 | 29 | <div class="row"> |
| 28 | - <div class=""> | |
| 30 | + <div class="col-lg-8 col-lg-offset-1 col-md-8 col-md-offset-1 col-sm-8 col-sm-offset-1 col-xs-8 col-xs-offset-1"> | |
| 29 | 31 | <div class="card"> |
| 30 | 32 | <div class="card-content"> |
| 31 | 33 | <div class="card-body"> | ... | ... |
courses/urls.py
| ... | ... | @@ -8,6 +8,7 @@ urlpatterns = [ |
| 8 | 8 | url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), |
| 9 | 9 | url(r'^(?P<slug>[\w_-]+)/$', views.CourseView.as_view(), name='view'), |
| 10 | 10 | url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'), |
| 11 | + url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'), | |
| 11 | 12 | url(r'^category/(?P<slug>[\w_-]+)/$', views.FilteredView.as_view(), name='filter'), |
| 12 | 13 | url(r'^categories/view/$', views.IndexCatView.as_view(), name='manage_cat'), |
| 13 | 14 | url(r'^categories/create/$', views.CreateCatView.as_view(), name="create_cat"), |
| ... | ... | @@ -18,6 +19,7 @@ urlpatterns = [ |
| 18 | 19 | url(r'^subjects/create/(?P<slug>[\w_-]+)/$', views.CreateSubjectView.as_view(), name='create_subject'), |
| 19 | 20 | url(r'^subjects/update/(?P<slug>[\w_-]+)/$', views.UpdateSubjectView.as_view(), name='update_subject'), |
| 20 | 21 | url(r'^subjects/delete/(?P<slug>[\w_-]+)/$', views.DeleteSubjectView.as_view(), name='delete_subject'), |
| 22 | + url(r'^subjects/subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_subject, name='subscribe_subject'), | |
| 21 | 23 | url(r'^topics/create/(?P<slug>[\w_-]+)/$', views.CreateTopicView.as_view(), name='create_topic'), |
| 22 | 24 | url(r'^topics/update/(?P<slug>[\w_-]+)/$', views.UpdateTopicView.as_view(), name='update_topic'), |
| 23 | 25 | url(r'^topics/createlink/$', linkviews.CreateLink.as_view(),name = 'create_link'), |
| ... | ... | @@ -31,7 +33,4 @@ urlpatterns = [ |
| 31 | 33 | url(r'^files/', include('files.urls', namespace = 'file')), |
| 32 | 34 | url(r'^upload-material/$', views.UploadMaterialView.as_view(), name='upload_material'), |
| 33 | 35 | url(r'^links/',include('links.urls',namespace = 'links')), |
| 34 | - | |
| 35 | - | |
| 36 | - | |
| 37 | -] | |
| 36 | +] | |
| 38 | 37 | \ No newline at end of file | ... | ... |
courses/views.py
| ... | ... | @@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ |
| 10 | 10 | from rolepermissions.verifications import has_role |
| 11 | 11 | from django.db.models import Q |
| 12 | 12 | from rolepermissions.verifications import has_object_permission |
| 13 | -from django.http import HttpResponseRedirect | |
| 13 | +from django.http import HttpResponseRedirect, JsonResponse | |
| 14 | 14 | |
| 15 | 15 | from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm |
| 16 | 16 | from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject |
| ... | ... | @@ -227,6 +227,15 @@ class DeleteView(LoginRequiredMixin, HasRoleMixin, NotificationMixin, generic.De |
| 227 | 227 | |
| 228 | 228 | return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine) |
| 229 | 229 | |
| 230 | +@login_required | |
| 231 | +def subscribe_course(request, slug): | |
| 232 | + course = get_object_or_404(Course, slug = slug) | |
| 233 | + | |
| 234 | + if course.students.add(request.user): | |
| 235 | + return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the course!")}) | |
| 236 | + else: | |
| 237 | + return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this course, try again later")}) | |
| 238 | + | |
| 230 | 239 | class FilteredView(LoginRequiredMixin, generic.ListView): |
| 231 | 240 | |
| 232 | 241 | login_url = reverse_lazy("core:home") |
| ... | ... | @@ -526,6 +535,17 @@ class DeleteSubjectView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): |
| 526 | 535 | def get_success_url(self): |
| 527 | 536 | return reverse_lazy('course:view', kwargs={'slug' : self.object.course.slug}) |
| 528 | 537 | |
| 538 | +@login_required | |
| 539 | +def subscribe_course(request, slug): | |
| 540 | + subject = get_object_or_404(Subject, slug = slug) | |
| 541 | + | |
| 542 | + if request.user.courses_student.filter(slug = slug).exists(): | |
| 543 | + if subject.students.add(request.user): | |
| 544 | + return JsonResponse({"status": "ok", "message": _("Successfully subscribed to the subject!")}) | |
| 545 | + else: | |
| 546 | + return JsonResponse({"status": "erro", "message": _("An error has occured. Could not subscribe to this subject, try again later")}) | |
| 547 | + else: | |
| 548 | + return JsonResponse({"status": "erro", "message": _("You're not subscribed in the course yet.")}) | |
| 529 | 549 | |
| 530 | 550 | class IndexSubjectCategoryView(LoginRequiredMixin, generic.ListView): |
| 531 | 551 | allowed_roles = ['professor', 'system_admin'] | ... | ... |
exam/models.py
| ... | ... | @@ -31,9 +31,9 @@ class Answer(models.Model): |
| 31 | 31 | |
| 32 | 32 | class AnswersStudent(models.Model): |
| 33 | 33 | status = models.BooleanField(_("Answered"), default=False) |
| 34 | - exam = models.ForeignKey(Exam, verbose_name = _('Exam'), related_name='answers_stundet') | |
| 35 | - answer = models.ManyToManyField(Answer,verbose_name = _('Answers Students'), related_name='answers_stundet') | |
| 36 | - student = models.ForeignKey(User, verbose_name = _('Student'), related_name='answers_stundent') | |
| 34 | + exam = models.ForeignKey(Exam, verbose_name = _('Exam'), related_name='student_exam') | |
| 35 | + answer = models.ManyToManyField(Answer,verbose_name = _('Answers Students'), related_name='student_answer') | |
| 36 | + student = models.ForeignKey(User, verbose_name = _('Student'), related_name='student') | |
| 37 | 37 | answered_in = models.DateTimeField(_("Answered Date"),auto_now=True) |
| 38 | 38 | |
| 39 | 39 | class Meta: | ... | ... |