Commit e168fc9da25166064709c96e8335af1e0a24196d

Authored by Jailson Dias
1 parent 3b30ee82

algumas alterações nos models

.gitignore
... ... @@ -51,3 +51,4 @@ angular_api
51 51 logs/
52 52 amadeus/uploads/
53 53 links/static/images/
  54 +uploads/
... ...
app/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
core/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
... ... @@ -22,7 +22,7 @@ class Migration(migrations.Migration):
22 22 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
23 23 ('name', models.CharField(max_length=100, verbose_name='Name')),
24 24 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
25   - ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
  25 + ('created_date', models.DateTimeField(auto_now_add=True, verbose_name='Created Date')),
26 26 ],
27 27 options={
28 28 'verbose_name': 'Action',
... ... @@ -84,7 +84,7 @@ class Migration(migrations.Migration):
84 84 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
85 85 ('name', models.CharField(max_length=100, verbose_name='Name')),
86 86 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
87   - ('created_date', models.DateField(auto_now_add=True, verbose_name='Created Date')),
  87 + ('created_date', models.DateTimeField(auto_now_add=True, verbose_name='Created Date')),
88 88 ('url', models.CharField(default='', max_length=100, verbose_name='URL')),
89 89 ],
90 90 options={
... ...
core/migrations/0002_auto_20161114_0144.py
... ... @@ -1,50 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -import django.db.models.deletion
8   -
9   -
10   -class Migration(migrations.Migration):
11   -
12   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('core', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='notification',
22   - name='actor',
23   - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Perfomer'),
24   - ),
25   - migrations.AddField(
26   - model_name='notification',
27   - name='user',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'),
29   - ),
30   - migrations.AddField(
31   - model_name='log',
32   - name='action_resource',
33   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource'),
34   - ),
35   - migrations.AddField(
36   - model_name='log',
37   - name='user',
38   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor'),
39   - ),
40   - migrations.AddField(
41   - model_name='action_resource',
42   - name='action',
43   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied'),
44   - ),
45   - migrations.AddField(
46   - model_name='action_resource',
47   - name='resource',
48   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
49   - ),
50   - ]
core/migrations/0002_auto_20161115_1936.py 0 → 100644
... ... @@ -0,0 +1,50 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  16 + ('core', '0001_initial'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='notification',
  22 + name='actor',
  23 + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notification_Performer', to=settings.AUTH_USER_MODEL, verbose_name='Performer'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='notification',
  27 + name='user',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notification_Actor', to=settings.AUTH_USER_MODEL, verbose_name='User'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='log',
  32 + name='action_resource',
  33 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action_Resource', verbose_name='Action_Resource'),
  34 + ),
  35 + migrations.AddField(
  36 + model_name='log',
  37 + name='user',
  38 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Actor'),
  39 + ),
  40 + migrations.AddField(
  41 + model_name='action_resource',
  42 + name='action',
  43 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Action', verbose_name='Action_Applied'),
  44 + ),
  45 + migrations.AddField(
  46 + model_name='action_resource',
  47 + name='resource',
  48 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Resource', verbose_name='Resource'),
  49 + ),
  50 + ]
... ...
core/models.py
... ... @@ -27,7 +27,7 @@ class Action(models.Model):
27 27  
28 28 name = models.CharField(_('Name'), max_length = 100)
29 29 slug = AutoSlugField(_("Slug"), populate_from=('name'), unique=True)
30   - created_date = models.DateField(_('Created Date'), auto_now_add=True)
  30 + created_date = models.DateTimeField(_('Created Date'), auto_now_add=True)
31 31  
32 32 class Meta:
33 33 verbose_name = "Action"
... ... @@ -51,7 +51,7 @@ class Resource(models.Model):
51 51  
52 52 name = models.CharField(_('Name'), max_length =100)
53 53 slug = AutoSlugField(_("Slug"), populate_from='name', unique=True)
54   - created_date = models.DateField(_('Created Date'), auto_now_add=True)
  54 + created_date = models.DateTimeField(_('Created Date'), auto_now_add=True)
55 55 url = models.CharField(_('URL'), max_length =100, default="")
56 56  
57 57  
... ...
core/templates/register_user.html
... ... @@ -12,103 +12,108 @@
12 12  
13 13  
14 14 {% block content %}
15   - {% if messages %}
16   - {% for message in messages %}
17   - <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert">
18   - <button type="button" class="close" data-dismiss="alert" aria-label="Close">
19   - <span aria-hidden="true">&times;</span>
20   - </button>
21   - <p>{{ message }}</p>
22   - </div>
23   - {% endfor %}
24   - {% endif %}
25   - <div class="row">
26   - <div class="col-lg-offset-4 col-lg-8 col-md-offset-4 col-md-8 col-xs-offset-4 col-xs-8 col-sm-offset-4 col-sm-8">
27   - <div class="col-lg-8 col-md-8 col-xs-8 col-sm-8">
28   - <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block " alt="logo amadeus" id="logo">
29   - </div>
30   - </div>
  15 +{% if messages %}
  16 +{% for message in messages %}
  17 +<div class="alert alert-{{ message.tags }} alert-dismissible" role="alert">
  18 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  19 + <span aria-hidden="true">&times;</span>
  20 + </button>
  21 + <p>{{ message }}</p>
  22 +</div>
  23 +{% endfor %}
  24 +{% endif %}
  25 +<div class="row">
  26 + <div class="col-sm-6 col-sm-offset-4 col-md-6 col-md-offset-4 col-xs-6 col-xs-offset-4 col-lg-6 col-lg-offset-4 col-xl-6 col-xl-offset-4 ">
  27 + <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">
  28 + <img src="{% static 'img/amadeus.png' %}" class="img-responsive center-block logo-login " alt="logo amadeus">
31 29 </div>
  30 + </div>
  31 +</div>
32 32  
33   - <div class="row">
34   - <div class="col-lg-8 col-lg-offset-3 col-md-8 col-md-offset-3 col-sm-8 col-sm-offset-3 col-xs-8 col-xs-offset-3">
35   - <div class="card">
36   - <div class="card-body">
37   - <form class="form-horizontal" name="registerForm" method="post" action="" enctype="multipart/form-data">
38   - {% csrf_token %}
39   - <legend>{% trans 'User Register' %}</legend>
40   - {% for field in form %}
41   - <div class="form-group is-empty {% if form.has_error %} has-error {% endif %} is-fileinput">
42   - {% if field.field.required %}
43   - <label for="{{ field.auto_id }}" class="col-md-2 control-label">{{ field.label }}<span>*</span></label>
44   - {% else %}
45   - <label for="{{ field.auto_id }}" class="col-md-2 control-label">{{ field.label }}</label>
46   - {% endif %}
47   - <div class="col-md-10">
48   - {% if field.auto_id == 'id_birth_date' %}
49   - {% render_field field class='form-control input-sm date-picker' %}
50   -
51   - <span id="helpBlock" class="help-block">{{ field.help_text }}</span>
52   - {% elif field.auto_id == 'id_image' %}
53   - {% render_field field class='form-control input-sm' %}
54   - <div class="input-group">
55   - <input type="text" readonly="" class="form-control" placeholder="Choose your photo...">
56   - <span class="input-group-btn input-group-sm">
57   - <button type="button" class="btn btn-fab btn-fab-mini">
58   - <i class="material-icons">attach_file</i>
59   - </button>
60   - </span>
61   - </div>
62   - {% elif field.auto_id == 'id_curriculum' %}
63   - {% render_field field class='form-control input-sm' %}
64   - <div class="input-group">
65   - <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose the file ...' %}">
66   - <span class="input-group-btn input-group-sm">
67   - <button type="button" class="btn btn-fab btn-fab-mini">
68   - <i class="material-icons">attach_file</i>
69   - </button>
70   - </span>
71   - </div>
72   - {% elif field.auto_id == 'id_cpf' %}
73   - {% render_field field class='form-control' onkeypress='campoNumerico(this,event); formatarCpf(this,event);' %}
74   -
75   - {% elif field.auto_id == 'id_year_titration' %}
76   - {% render_field field class='form-control' onkeypress='campoNumerico(this,event);' %}
  33 +<div class="row">
  34 + <div class="col-lg-8 col-lg-offset-3 col-md-8 col-md-offset-3 col-sm-8 col-sm-offset-3 col-xs-8 col-xs-offset-3">
  35 + <div class="card">
  36 + <div class="card-body">
  37 + <div class="row">
  38 + <div class="col-md-12 text-center">
  39 + <h2 style="color:#43a251"><strong>{% trans "User Register" %}</strong></h2>
  40 + </div>
  41 + </div>
77 42  
78   - {% elif field.auto_id == 'id_phone' %}
79   - {% render_field field class='form-control' onkeypress='campoNumerico(this,event); formatarTelefone(this,event);' %}
80   - {% else %}
81   - {% render_field field class='form-control' %}
82   - <span id="helpBlock" class="help-block">{{ field.help_text }}</span>
83   - {% endif %}
84   - </div>
  43 + <form class="form-horizontal" name="registerForm" method="post" action="" enctype="multipart/form-data">
  44 + {% csrf_token %}
  45 + {% for field in form %}
  46 + <div class="form-group is-empty {% if form.has_error %} has-error {% endif %} is-fileinput">
  47 + {% if field.field.required %}
  48 + <label for="{{ field.auto_id }}" class="col-md-2 control-label">{{ field.label }}<span>*</span></label>
  49 + {% else %}
  50 + <label for="{{ field.auto_id }}" class="col-md-2 control-label">{{ field.label }}</label>
  51 + {% endif %}
  52 + <div class="col-md-10">
  53 + {% if field.auto_id == 'id_birth_date' %}
  54 + {% render_field field class='form-control input-sm date-picker' %}
85 55  
86   - {% if field.errors %}
87   - <div class="alert alert-danger alert-dismissible col-md-offset-1 col-md-10 col-sm-offset-1 col-sm-10 col-xs-offset-1 col-xs-10" role="alert">
88   - <button type="button" class="close" data-dismiss="alert" aria-label="Close">
89   - <span aria-hidden="true">&times;</span>
90   - </button>
91   - <ul>
92   - {% for error in field.errors %}
93   - <li>{{ error }}</li>
94   - {% endfor %}
95   - </ul>
96   - </div>
97   - {% endif %}
98   - </div>
99   - {% endfor %}
100   - <div class="col-md-offset-2 col-md-6 col-sm-offset-2 col-sm-6 col-xs-6 col-xs-offset-2 col-xs-6">
101   - <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-primary" />
  56 + <span id="helpBlock" class="help-block">{{ field.help_text }}</span>
  57 + {% elif field.auto_id == 'id_image' %}
  58 + {% render_field field class='form-control input-sm' %}
  59 + <div class="input-group">
  60 + <input type="text" readonly="" class="form-control" placeholder="Choose your photo...">
  61 + <span class="input-group-btn input-group-sm">
  62 + <button type="button" class="btn btn-fab btn-fab-mini">
  63 + <i class="material-icons">image</i>
  64 + </button>
  65 + </span>
102 66 </div>
103   - <div class=" col-md-4 col-sm-4 col-xs-4">
104   - <a href="{% url 'core:home' %}" class=" btn btn-danger btn-raised" >{% trans 'Cancel' %}</a>
  67 + {% elif field.auto_id == 'id_curriculum' %}
  68 + {% render_field field class='form-control input-sm' %}
  69 + <div class="input-group">
  70 + <input type="text" readonly="" class="form-control" placeholder="{% trans 'Choose the file ...' %}">
  71 + <span class="input-group-btn input-group-sm">
  72 + <button type="button" class="btn btn-fab btn-fab-mini">
  73 + <i class="material-icons">attach_file</i>
  74 + </button>
  75 + </span>
105 76 </div>
  77 + {% elif field.auto_id == 'id_cpf' %}
  78 + {% render_field field class='form-control' onkeypress='campoNumerico(this,event); formatarCpf(this,event);' %}
  79 +
  80 + {% elif field.auto_id == 'id_year_titration' %}
  81 + {% render_field field class='form-control' onkeypress='campoNumerico(this,event);' %}
106 82  
107   - </form>
  83 + {% elif field.auto_id == 'id_phone' %}
  84 + {% render_field field class='form-control' onkeypress='campoNumerico(this,event); formatarTelefone(this,event);' %}
  85 + {% else %}
  86 + {% render_field field class='form-control' %}
  87 + <span id="helpBlock" class="help-block">{{ field.help_text }}</span>
  88 + {% endif %}
  89 + </div>
  90 +
  91 + {% if field.errors %}
  92 + <div class="alert alert-danger alert-dismissible col-md-offset-1 col-md-10 col-sm-offset-1 col-sm-10 col-xs-offset-1 col-xs-10" role="alert">
  93 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  94 + <span aria-hidden="true">&times;</span>
  95 + </button>
  96 + <ul>
  97 + {% for error in field.errors %}
  98 + <li>{{ error }}</li>
  99 + {% endfor %}
  100 + </ul>
  101 + </div>
  102 + {% endif %}
  103 + </div>
  104 + {% endfor %}
  105 + <div class="col-md-offset-2 col-md-6 col-sm-offset-2 col-sm-6 col-xs-6 col-xs-offset-2 col-xs-6">
  106 + <input type="submit" value="{% trans 'Save' %}" class="btn btn-raised btn-primary" />
108 107 </div>
  108 + <div class=" col-md-4 col-sm-4 col-xs-4">
  109 + <a href="{% url 'core:home' %}" class=" btn btn-danger btn-raised" >{% trans 'Cancel' %}</a>
  110 + </div>
  111 +
  112 + </form>
109 113 </div>
110 114 </div>
111 115 </div>
  116 +</div>
112 117  
113   - <br clear="all" />
  118 +<br clear="all" />
114 119 {% endblock %}
... ...
courses/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 import autoslug.fields
... ... @@ -44,7 +44,7 @@ class Migration(migrations.Migration):
44 44 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
45 45 ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
46 46 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
47   - ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
  47 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
48 48 ],
49 49 options={
50 50 'verbose_name': 'Category',
... ... @@ -60,7 +60,7 @@ class Migration(migrations.Migration):
60 60 ('objectivies', models.TextField(blank=True, verbose_name='Objectivies')),
61 61 ('content', models.TextField(blank=True, verbose_name='Content')),
62 62 ('max_students', models.PositiveIntegerField(blank=True, verbose_name='Maximum Students')),
63   - ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
  63 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
64 64 ('init_register_date', models.DateField(verbose_name='Register Date (Begin)')),
65 65 ('end_register_date', models.DateField(verbose_name='Register Date (End)')),
66 66 ('init_date', models.DateField(verbose_name='Begin of Course Date')),
... ... @@ -68,9 +68,9 @@ class Migration(migrations.Migration):
68 68 ('public', models.BooleanField(default=False, verbose_name='Public')),
69 69 ],
70 70 options={
71   - 'ordering': ('create_date', 'name'),
72 71 'verbose_name': 'Course',
73 72 'verbose_name_plural': 'Courses',
  73 + 'ordering': ('create_date', 'name'),
74 74 },
75 75 ),
76 76 migrations.CreateModel(
... ... @@ -79,7 +79,7 @@ class Migration(migrations.Migration):
79 79 ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
80 80 ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')),
81 81 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
82   - ('create_date', models.DateField(auto_now_add=True, verbose_name='Creation Date')),
  82 + ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
83 83 ],
84 84 options={
85 85 'verbose_name': 'Category',
... ... @@ -123,11 +123,13 @@ class Migration(migrations.Migration):
123 123 ('end_date', models.DateField(verbose_name='End of Subject Date')),
124 124 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
125 125 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
  126 + ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category')),
  127 + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course')),
126 128 ],
127 129 options={
128   - 'ordering': ('create_date', 'name'),
129 130 'verbose_name': 'Subject',
130 131 'verbose_name_plural': 'Subjects',
  132 + 'ordering': ('create_date', 'name'),
131 133 },
132 134 ),
133 135 migrations.CreateModel(
... ... @@ -137,6 +139,7 @@ class Migration(migrations.Migration):
137 139 ('name', models.CharField(max_length=100, verbose_name='Name')),
138 140 ('slug', autoslug.fields.AutoSlugField(editable=False, populate_from='name', unique=True, verbose_name='Slug')),
139 141 ('description', models.TextField(blank=True, verbose_name='Description')),
  142 + ('subjects', models.ManyToManyField(to='courses.Subject')),
140 143 ],
141 144 options={
142 145 'verbose_name': 'subject category',
... ... @@ -153,11 +156,12 @@ class Migration(migrations.Migration):
153 156 ('create_date', models.DateTimeField(auto_now_add=True, verbose_name='Creation Date')),
154 157 ('update_date', models.DateTimeField(auto_now=True, verbose_name='Date of last update')),
155 158 ('visible', models.BooleanField(default=False, verbose_name='Visible')),
  159 + ('subject', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject')),
156 160 ],
157 161 options={
158   - 'ordering': ('create_date', 'name'),
159 162 'verbose_name': 'Topic',
160 163 'verbose_name_plural': 'Topics',
  164 + 'ordering': ('create_date', 'name'),
161 165 },
162 166 ),
163 167 ]
... ...
courses/migrations/0002_auto_20161114_0144.py
... ... @@ -1,110 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -import django.db.models.deletion
8   -
9   -
10   -class Migration(migrations.Migration):
11   -
12   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('courses', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='topic',
22   - name='owner',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Owner'),
24   - ),
25   - migrations.AddField(
26   - model_name='topic',
27   - name='subject',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Subject', verbose_name='Subject'),
29   - ),
30   - migrations.AddField(
31   - model_name='subjectcategory',
32   - name='subjects',
33   - field=models.ManyToManyField(to='courses.Subject'),
34   - ),
35   - migrations.AddField(
36   - model_name='subject',
37   - name='category',
38   - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='subject_category', to='courses.CategorySubject', verbose_name='Category'),
39   - ),
40   - migrations.AddField(
41   - model_name='subject',
42   - name='course',
43   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subjects', to='courses.Course', verbose_name='Course'),
44   - ),
45   - migrations.AddField(
46   - model_name='subject',
47   - name='professors',
48   - field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
49   - ),
50   - migrations.AddField(
51   - model_name='subject',
52   - name='students',
53   - field=models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
54   - ),
55   - migrations.AddField(
56   - model_name='material',
57   - name='students',
58   - field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
59   - ),
60   - migrations.AddField(
61   - model_name='material',
62   - name='topic',
63   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
64   - ),
65   - migrations.AddField(
66   - model_name='linkmaterial',
67   - name='material',
68   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),
69   - ),
70   - migrations.AddField(
71   - model_name='filematerial',
72   - name='material',
73   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),
74   - ),
75   - migrations.AddField(
76   - model_name='course',
77   - name='category',
78   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),
79   - ),
80   - migrations.AddField(
81   - model_name='course',
82   - name='coordenator',
83   - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),
84   - ),
85   - migrations.AddField(
86   - model_name='course',
87   - name='professors',
88   - field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
89   - ),
90   - migrations.AddField(
91   - model_name='course',
92   - name='students',
93   - field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
94   - ),
95   - migrations.AddField(
96   - model_name='activityfile',
97   - name='diet',
98   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity'),
99   - ),
100   - migrations.AddField(
101   - model_name='activity',
102   - name='students',
103   - field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
104   - ),
105   - migrations.AddField(
106   - model_name='activity',
107   - name='topic',
108   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
109   - ),
110   - ]
courses/migrations/0002_auto_20161115_1936.py 0 → 100644
... ... @@ -0,0 +1,85 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + ('courses', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='subject',
  22 + name='professors',
  23 + field=models.ManyToManyField(related_name='professors_subjects', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='subject',
  27 + name='students',
  28 + field=models.ManyToManyField(blank=True, related_name='subject_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='material',
  32 + name='students',
  33 + field=models.ManyToManyField(related_name='materials', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  34 + ),
  35 + migrations.AddField(
  36 + model_name='material',
  37 + name='topic',
  38 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='materials', to='courses.Topic', verbose_name='Topic'),
  39 + ),
  40 + migrations.AddField(
  41 + model_name='linkmaterial',
  42 + name='material',
  43 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_link', to='courses.Material', verbose_name='Material'),
  44 + ),
  45 + migrations.AddField(
  46 + model_name='filematerial',
  47 + name='material',
  48 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_file', to='courses.Material', verbose_name='Material'),
  49 + ),
  50 + migrations.AddField(
  51 + model_name='course',
  52 + name='category',
  53 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_category', to='courses.CourseCategory', verbose_name='Category'),
  54 + ),
  55 + migrations.AddField(
  56 + model_name='course',
  57 + name='coordenator',
  58 + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_coordenator', to=settings.AUTH_USER_MODEL, verbose_name='Coordenator'),
  59 + ),
  60 + migrations.AddField(
  61 + model_name='course',
  62 + name='professors',
  63 + field=models.ManyToManyField(related_name='courses_professors', to=settings.AUTH_USER_MODEL, verbose_name='Professors'),
  64 + ),
  65 + migrations.AddField(
  66 + model_name='course',
  67 + name='students',
  68 + field=models.ManyToManyField(blank=True, related_name='courses_student', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  69 + ),
  70 + migrations.AddField(
  71 + model_name='activityfile',
  72 + name='diet',
  73 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='courses.Activity'),
  74 + ),
  75 + migrations.AddField(
  76 + model_name='activity',
  77 + name='students',
  78 + field=models.ManyToManyField(related_name='activities', to=settings.AUTH_USER_MODEL, verbose_name='Students'),
  79 + ),
  80 + migrations.AddField(
  81 + model_name='activity',
  82 + name='topic',
  83 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to='courses.Topic', verbose_name='Topic'),
  84 + ),
  85 + ]
... ...
courses/models.py
... ... @@ -13,7 +13,7 @@ class CourseCategory(models.Model):
13 13  
14 14 name = models.CharField(_('Name'), max_length = 100, unique = True)
15 15 slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
16   - create_date = models.DateField(_('Creation Date'), auto_now_add = True)
  16 + create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
17 17  
18 18 class Meta:
19 19 verbose_name = _('Category')
... ... @@ -25,7 +25,7 @@ class CourseCategory(models.Model):
25 25 class CategorySubject(models.Model):
26 26 name = models.CharField(_('Name'), max_length=100, unique=True)
27 27 slug = AutoSlugField(_("Slug"), populate_from='name', unique=True)
28   - create_date = models.DateField(_('Creation Date'), auto_now_add=True)
  28 + create_date = models.DateTimeField(_('Creation Date'), auto_now_add=True)
29 29  
30 30 class Meta:
31 31 verbose_name = _('Category')
... ... @@ -41,7 +41,7 @@ class Course(models.Model):
41 41 objectivies = models.TextField(_('Objectivies'), blank = True)
42 42 content = models.TextField(_('Content'), blank = True)
43 43 max_students = models.PositiveIntegerField(_('Maximum Students'), blank = True)
44   - create_date = models.DateField(_('Creation Date'), auto_now_add = True)
  44 + create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
45 45 init_register_date = models.DateField(_('Register Date (Begin)'))
46 46 end_register_date = models.DateField(_('Register Date (End)'))
47 47 init_date = models.DateField(_('Begin of Course Date'))
... ... @@ -106,7 +106,6 @@ class Topic(models.Model):
106 106 create_date = models.DateTimeField(_('Creation Date'), auto_now_add = True)
107 107 update_date = models.DateTimeField(_('Date of last update'), auto_now=True)
108 108 subject = models.ForeignKey(Subject, verbose_name = _('Subject'))
109   - owner = models.ForeignKey(User, verbose_name = _('Owner'))
110 109 visible = models.BooleanField(_('Visible'), default=False)
111 110  
112 111 class Meta:
... ...
courses/views.py
... ... @@ -429,7 +429,7 @@ class FilteredView(LoginRequiredMixin, generic.ListView):
429 429 redirect_field_name = 'next'
430 430 template_name = 'course/filtered.html'
431 431 context_object_name = 'courses'
432   - paginate_by = 3
  432 + paginate_by = 10
433 433  
434 434 def get_queryset(self):
435 435 category = get_object_or_404(CourseCategory, slug = self.kwargs.get('slug'))
... ... @@ -447,11 +447,11 @@ class IndexCatView(LoginRequiredMixin, generic.ListView):
447 447  
448 448 login_url = reverse_lazy("core:home")
449 449 redirect_field_name = 'next'
450   - queryset = sorted(CourseCategory.objects.all(),key = lambda x:x.name)
  450 + queryset = CourseCategory.objects.all().order_by("name")
451 451 template_name = 'category/index.html'
452 452 context_object_name = 'categories'
453   - paginate_by = 5
454   -
  453 + paginate_by = 10
  454 +
455 455 class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
456 456  
457 457 allowed_roles = ['professor', 'system_admin']
... ... @@ -589,7 +589,7 @@ class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, Notificat
589 589  
590 590 def form_valid(self, form):
591 591 self.object = form.save()
592   -
  592 +
593 593 return super(ReplicateSubjectView, self).form_valid(form)
594 594  
595 595 def get_success_url(self):
... ... @@ -1065,4 +1065,4 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati
1065 1065  
1066 1066 super(ReplicateTopicView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
1067 1067  
1068   - return super(ReplicateTopicView, self).form_valid(form)
1069 1068 \ No newline at end of file
  1069 + return super(ReplicateTopicView, self).form_valid(form)
... ...
exam/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ... @@ -23,9 +23,9 @@ class Migration(migrations.Migration):
23 23 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 24 ],
25 25 options={
26   - 'ordering': ('order',),
27 26 'verbose_name': 'Answer',
28 27 'verbose_name_plural': 'Answers',
  28 + 'ordering': ('order',),
29 29 },
30 30 ),
31 31 migrations.CreateModel(
... ...
exam/migrations/0002_auto_20161114_0144.py
... ... @@ -1,30 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -import django.db.models.deletion
8   -
9   -
10   -class Migration(migrations.Migration):
11   -
12   - initial = True
13   -
14   - dependencies = [
15   - ('exam', '0001_initial'),
16   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='answersstudent',
22   - name='student',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
24   - ),
25   - migrations.AddField(
26   - model_name='answer',
27   - name='exam',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'),
29   - ),
30   - ]
exam/migrations/0002_auto_20161115_1936.py 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  16 + ('exam', '0001_initial'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='answersstudent',
  22 + name='student',
  23 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='answer',
  27 + name='exam',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='exam.Exam', verbose_name='Answers'),
  29 + ),
  30 + ]
... ...
exercise/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
files/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ... @@ -26,9 +26,9 @@ class Migration(migrations.Migration):
26 26 ('file_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='topic_files', to='core.MimeType', verbose_name='Type file')),
27 27 ],
28 28 options={
29   - 'ordering': ('-id',),
30 29 'verbose_name': 'File',
31 30 'verbose_name_plural': 'Files',
  31 + 'ordering': ('-id',),
32 32 },
33 33 bases=('courses.material',),
34 34 ),
... ...
files/migrations/0002_topicfile_professor.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.conf import settings
... ... @@ -11,8 +11,8 @@ class Migration(migrations.Migration):
11 11 initial = True
12 12  
13 13 dependencies = [
14   - ('files', '0001_initial'),
15 14 migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  15 + ('files', '0001_initial'),
16 16 ]
17 17  
18 18 operations = [
... ...
forum/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
forum/migrations/0002_auto_20161114_0144.py
... ... @@ -1,35 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -import django.db.models.deletion
8   -
9   -
10   -class Migration(migrations.Migration):
11   -
12   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('forum', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='postanswer',
22   - name='user',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
24   - ),
25   - migrations.AddField(
26   - model_name='post',
27   - name='forum',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum'),
29   - ),
30   - migrations.AddField(
31   - model_name='post',
32   - name='user',
33   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
34   - ),
35   - ]
forum/migrations/0002_auto_20161115_1936.py 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + ('forum', '0001_initial'),
  16 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='postanswer',
  22 + name='user',
  23 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='post',
  27 + name='forum',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='forum.Forum', verbose_name='Forum'),
  29 + ),
  30 + migrations.AddField(
  31 + model_name='post',
  32 + name='user',
  33 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Autor'),
  34 + ),
  35 + ]
... ...
links/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ...
poll/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 from django.db import migrations, models
... ... @@ -23,9 +23,9 @@ class Migration(migrations.Migration):
23 23 ('order', models.PositiveSmallIntegerField(verbose_name='Order')),
24 24 ],
25 25 options={
26   - 'ordering': ('order',),
27 26 'verbose_name': 'Answer',
28 27 'verbose_name_plural': 'Answers',
  28 + 'ordering': ('order',),
29 29 },
30 30 ),
31 31 migrations.CreateModel(
... ...
poll/migrations/0002_auto_20161114_0144.py
... ... @@ -1,30 +0,0 @@
1   -# -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
3   -from __future__ import unicode_literals
4   -
5   -from django.conf import settings
6   -from django.db import migrations, models
7   -import django.db.models.deletion
8   -
9   -
10   -class Migration(migrations.Migration):
11   -
12   - initial = True
13   -
14   - dependencies = [
15   - migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16   - ('poll', '0001_initial'),
17   - ]
18   -
19   - operations = [
20   - migrations.AddField(
21   - model_name='answersstudent',
22   - name='student',
23   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
24   - ),
25   - migrations.AddField(
26   - model_name='answer',
27   - name='poll',
28   - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'),
29   - ),
30   - ]
poll/migrations/0002_auto_20161115_1936.py 0 → 100644
... ... @@ -0,0 +1,30 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.conf import settings
  6 +from django.db import migrations, models
  7 +import django.db.models.deletion
  8 +
  9 +
  10 +class Migration(migrations.Migration):
  11 +
  12 + initial = True
  13 +
  14 + dependencies = [
  15 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  16 + ('poll', '0001_initial'),
  17 + ]
  18 +
  19 + operations = [
  20 + migrations.AddField(
  21 + model_name='answersstudent',
  22 + name='student',
  23 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers_stundent', to=settings.AUTH_USER_MODEL, verbose_name='Student'),
  24 + ),
  25 + migrations.AddField(
  26 + model_name='answer',
  27 + name='poll',
  28 + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='poll.Poll', verbose_name='Answers'),
  29 + ),
  30 + ]
... ...
users/migrations/0001_initial.py
1 1 # -*- coding: utf-8 -*-
2   -# Generated by Django 1.10 on 2016-11-14 04:44
  2 +# Generated by Django 1.10 on 2016-11-15 22:36
3 3 from __future__ import unicode_literals
4 4  
5 5 import django.contrib.auth.models
... ... @@ -26,14 +26,14 @@ class Migration(migrations.Migration):
26 26 ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
27 27 ('username', models.CharField(help_text='A short name that will be used to identify you in the platform and to access it', max_length=35, unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[\\w.@+-]+$', 32), 'Type a valid username. This fields should only contain letters, numbers and the characteres: @/./+/-/_ .', 'invalid')], verbose_name='Login')),
28 28 ('email', models.EmailField(max_length=254, unique=True, verbose_name='Mail')),
29   - ('name', models.CharField(blank=True, max_length=100, verbose_name='Name')),
  29 + ('name', models.CharField(max_length=100, verbose_name='Name')),
30 30 ('city', models.CharField(blank=True, max_length=90, verbose_name='City')),
31 31 ('state', models.CharField(blank=True, max_length=30, verbose_name='State')),
32 32 ('gender', models.CharField(choices=[('M', 'Male'), ('F', 'Female')], max_length=1, verbose_name='Gender')),
33   - ('image', models.ImageField(blank=True, upload_to='users/', verbose_name='Image')),
34   - ('birth_date', models.DateField(null=True, verbose_name='Birth Date')),
  33 + ('image', models.ImageField(blank=True, null=True, upload_to='users/', verbose_name='Image')),
  34 + ('birth_date', models.DateField(verbose_name='Birth Date')),
35 35 ('phone', models.CharField(blank=True, max_length=30, verbose_name='Phone')),
36   - ('cpf', models.CharField(blank=True, max_length=15, verbose_name='Cpf')),
  36 + ('cpf', models.CharField(max_length=15, verbose_name='Cpf')),
37 37 ('type_profile', models.IntegerField(blank=True, choices=[(1, 'Professor'), (2, 'Student')], default=2, null=True, verbose_name='Type')),
38 38 ('titration', models.CharField(blank=True, max_length=50, null=True, verbose_name='Titration')),
39 39 ('year_titration', models.CharField(blank=True, max_length=4, null=True, verbose_name='Year of titration')),
... ...
users/migrations/0002_auto_20161115_1941.py 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2016-11-15 22:41
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations, models
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + ('users', '0001_initial'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterField(
  16 + model_name='user',
  17 + name='birth_date',
  18 + field=models.DateField(null=True, verbose_name='Birth Date'),
  19 + ),
  20 + ]
... ...
users/models.py
... ... @@ -16,14 +16,14 @@ class User(AbstractBaseUser, PermissionsMixin):
16 16 )
17 17 ], help_text = _('A short name that will be used to identify you in the platform and to access it'))
18 18 email = models.EmailField(_('Mail'), unique = True)
19   - name = models.CharField(_('Name'), max_length = 100, blank = True)
  19 + name = models.CharField(_('Name'), max_length = 100)
20 20 city = models.CharField(_('City'), max_length = 90, blank = True)
21 21 state = models.CharField(_('State'), max_length = 30, blank = True)
22 22 gender = models.CharField(_('Gender'), max_length = 1, choices = (('M', _('Male')), ('F', _('Female'))))
23   - image = models.ImageField(verbose_name = _('Image'), blank = True, upload_to = 'users/')
  23 + image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'users/')
24 24 birth_date = models.DateField(_('Birth Date'), null=True)
25 25 phone = models.CharField(_('Phone'), max_length = 30, blank = True)
26   - cpf = models.CharField(_('Cpf'), max_length = 15, blank = True)
  26 + cpf = models.CharField(_('Cpf'), max_length = 15)
27 27 type_profile = models.IntegerField(_('Type'), null = True, blank = True, choices = ((1, _('Professor')), (2, _('Student'))), default=2)
28 28 titration = models.CharField(_('Titration'), max_length = 50, blank = True, null = True)
29 29 year_titration = models.CharField(_('Year of titration'), max_length = 4, blank = True, null = True)
... ... @@ -56,4 +56,4 @@ class User(AbstractBaseUser, PermissionsMixin):
56 56 if self.image and hasattr(self.image, 'url'):
57 57 return self.image.url
58 58 else:
59   - return static('img/no_image.jpg')
60 59 \ No newline at end of file
  60 + return static('img/no_image.jpg')
... ...