diff --git a/commentaries/migrations/0001_initial.py b/commentaries/migrations/0001_initial.py index 9cc185381991a304cba5d35ffba50af25b40e20a..f149c3a831534f6c44508e98519b28c53abb66ad 100644 --- a/commentaries/migrations/0001_initial.py +++ b/commentaries/migrations/0001_initial.py @@ -15,7 +15,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Commentary', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), ('vetted', models.BooleanField(default=False)), ('type', models.CharField(max_length=9)), ('open_for_commenting', models.BooleanField(default=True)), @@ -26,16 +26,17 @@ class Migration(migrations.Migration): ('pub_date', models.DateField(verbose_name='date of original publication')), ('pub_abstract', models.TextField()), ('nr_clarity_ratings', models.IntegerField(default=0)), - ('clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('clarity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_validity_ratings', models.IntegerField(default=0)), - ('validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('validity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_rigour_ratings', models.IntegerField(default=0)), - ('rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('rigour_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_originality_ratings', models.IntegerField(default=0)), - ('originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('originality_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_significance_ratings', models.IntegerField(default=0)), - ('significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('significance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('latest_activity', models.DateTimeField(default=django.utils.timezone.now)), + ('authors', models.ManyToManyField(related_name='authors_com', blank=True, null=True, to='contributors.Contributor')), ('vetted_by', models.ForeignKey(null=True, to='contributors.Contributor', blank=True)), ], ), diff --git a/commentaries/migrations/0002_auto_20151212_0833.py b/commentaries/migrations/0002_auto_20151212_0833.py deleted file mode 100644 index 70b9d186361e4de24577d248f092f69ee6c93dc7..0000000000000000000000000000000000000000 --- a/commentaries/migrations/0002_auto_20151212_0833.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('commentaries', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='commentary', - name='clarity_rating', - field=models.DecimalField(max_digits=3, null=True, decimal_places=0, default=0), - ), - migrations.AlterField( - model_name='commentary', - name='originality_rating', - field=models.DecimalField(max_digits=3, null=True, decimal_places=0, default=0), - ), - migrations.AlterField( - model_name='commentary', - name='rigour_rating', - field=models.DecimalField(max_digits=3, null=True, decimal_places=0, default=0), - ), - migrations.AlterField( - model_name='commentary', - name='significance_rating', - field=models.DecimalField(max_digits=3, null=True, decimal_places=0, default=0), - ), - migrations.AlterField( - model_name='commentary', - name='validity_rating', - field=models.DecimalField(max_digits=3, null=True, decimal_places=0, default=0), - ), - ] diff --git a/commentaries/templates/commentaries/commentary_detail.html b/commentaries/templates/commentaries/commentary_detail.html index e359e2e1e3af2dd411279c96ae7067cc58408123..b8a38360310071ceae73b16ae8846fcac354249e 100644 --- a/commentaries/templates/commentaries/commentary_detail.html +++ b/commentaries/templates/commentaries/commentary_detail.html @@ -78,11 +78,11 @@ <div class="col-8"> <ul class="ratingsdata"> <li>Ratings: </li> + <li>relevance: {{ comment.relevance_rating }}% ({{ comment.nr_relevance_ratings }})</li> + <li>importance: {{ comment.importance_rating }}% ({{ comment.nr_importance_ratings }})</li> <li>clarity: {{ comment.clarity_rating }}% ({{ comment.nr_clarity_ratings }})</li> <li>validity: {{ comment.validity_rating }}% ({{ comment.nr_validity_ratings }})</li> <li>rigour: {{ comment.rigour_rating }}% ({{ comment.nr_rigour_ratings }})</li> - <li>originality: {{ comment.originality_rating }}% ({{ comment.nr_originality_ratings }})</li> - <li>significance: {{ comment.significance_rating }}% ({{ comment.nr_significance_ratings }})</li> </ul> </div> diff --git a/comments/migrations/0001_initial.py b/comments/migrations/0001_initial.py index 4d1c98ac09cc4629f684ffbd9182b3ce5c557f3e..6e797d0fc577814679aae852264bc34615aa0d55 100644 --- a/comments/migrations/0001_initial.py +++ b/comments/migrations/0001_initial.py @@ -7,30 +7,30 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('contributors', '0001_initial'), ('reports', '0001_initial'), - ('submissions', '0001_initial'), ('commentaries', '0001_initial'), + ('submissions', '0001_initial'), + ('contributors', '0001_initial'), ] operations = [ migrations.CreateModel( name='AuthorReply', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), ('status', models.SmallIntegerField(default=0)), ('reply_text', models.TextField()), ('date_submitted', models.DateTimeField(verbose_name='date submitted')), + ('nr_relevance_ratings', models.IntegerField(default=0)), + ('relevance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), + ('nr_importance_ratings', models.IntegerField(default=0)), + ('importance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_clarity_ratings', models.IntegerField(default=0)), - ('clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('clarity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_validity_ratings', models.IntegerField(default=0)), - ('validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('validity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_rigour_ratings', models.IntegerField(default=0)), - ('rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_originality_ratings', models.IntegerField(default=0)), - ('originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_significance_ratings', models.IntegerField(default=0)), - ('significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('rigour_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('author', models.ForeignKey(to='contributors.Contributor')), ('commentary', models.ForeignKey(null=True, to='commentaries.Commentary', blank=True)), ], @@ -38,20 +38,20 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Comment', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), ('status', models.SmallIntegerField(default=0)), ('comment_text', models.TextField()), ('date_submitted', models.DateTimeField(verbose_name='date submitted')), + ('nr_relevance_ratings', models.IntegerField(default=0)), + ('relevance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), + ('nr_importance_ratings', models.IntegerField(default=0)), + ('importance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_clarity_ratings', models.IntegerField(default=0)), - ('clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('clarity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_validity_ratings', models.IntegerField(default=0)), - ('validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('validity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_rigour_ratings', models.IntegerField(default=0)), - ('rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_originality_ratings', models.IntegerField(default=0)), - ('originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_significance_ratings', models.IntegerField(default=0)), - ('significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('rigour_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('author', models.ForeignKey(to='contributors.Contributor')), ('commentary', models.ForeignKey(null=True, to='commentaries.Commentary', blank=True)), ('in_reply_to', models.ForeignKey(null=True, to='comments.Comment', blank=True)), diff --git a/comments/migrations/0002_auto_20151212_0919.py b/comments/migrations/0002_auto_20151212_0919.py deleted file mode 100644 index 8d6936decd7e03e84d45ee938726e1ce10d20a35..0000000000000000000000000000000000000000 --- a/comments/migrations/0002_auto_20151212_0919.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('comments', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='authorreply', - name='clarity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='authorreply', - name='originality_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='authorreply', - name='rigour_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='authorreply', - name='significance_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='authorreply', - name='validity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='comment', - name='clarity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='comment', - name='originality_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='comment', - name='rigour_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='comment', - name='significance_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='comment', - name='validity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - ] diff --git a/comments/models.py b/comments/models.py index 87e11576db194c26b01e35337fdc5bf4e28d2817..5822553ac37408973e268339a647077b90c8e26d 100644 --- a/comments/models.py +++ b/comments/models.py @@ -31,16 +31,16 @@ class Comment(models.Model): comment_text = models.TextField() date_submitted = models.DateTimeField('date submitted') # Aggregates of ratings applied to this comment: + nr_relevance_ratings = models.IntegerField(default=0) + relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) + nr_importance_ratings = models.IntegerField(default=0) + importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_clarity_ratings = models.IntegerField(default=0) clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_validity_ratings = models.IntegerField(default=0) validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_rigour_ratings = models.IntegerField(default=0) rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_originality_ratings = models.IntegerField(default=0) - originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_significance_ratings = models.IntegerField(default=0) - significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) def __str__ (self): return self.comment_text @@ -63,16 +63,16 @@ class AuthorReply(models.Model): reply_text = models.TextField() date_submitted = models.DateTimeField('date submitted') # Aggregates of ratings applied to this comment: + nr_relevance_ratings = models.IntegerField(default=0) + relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) + nr_importance_ratings = models.IntegerField(default=0) + importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_clarity_ratings = models.IntegerField(default=0) clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_validity_ratings = models.IntegerField(default=0) validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_rigour_ratings = models.IntegerField(default=0) rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_originality_ratings = models.IntegerField(default=0) - originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_significance_ratings = models.IntegerField(default=0) - significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) def __str__ (self): return self.reply_text diff --git a/contributors/migrations/0001_initial.py b/contributors/migrations/0001_initial.py index ce199ab90cf7311d97c650a47ecdcaea3d68b6ee..6ab9e67f83bfeb6bef71571a5f896138136a18c0 100644 --- a/contributors/migrations/0001_initial.py +++ b/contributors/migrations/0001_initial.py @@ -15,33 +15,35 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Contributor', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('rank', models.SmallIntegerField(choices=[(0, 'newly registered'), (1, 'normal user'), (2, 'SciPost Commentary Editor'), (3, 'SciPost Journal Editor'), (4, 'SciPost Journal Editor-in-chief'), (5, 'SciPost Lead Editor'), (-1, 'not a professional scientist'), (-2, 'other account already exists'), (-3, 'barred from SciPost'), (-4, 'account disabled')], default=0)), - ('title', models.CharField(max_length=4, choices=[('PR', 'Prof.'), ('DR', 'Dr'), ('MR', 'Mr'), ('MRS', 'Mrs')])), - ('orcid_id', models.CharField(max_length=20, null=True, blank=True, default='', verbose_name='ORCID id')), - ('affiliation', models.CharField(max_length=300, verbose_name='affiliation')), - ('address', models.CharField(max_length=1000, verbose_name='address', blank=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('rank', models.SmallIntegerField(default=0, choices=[(0, 'newly registered'), (1, 'normal user'), (2, 'SciPost Commentary Editor'), (3, 'SciPost Journal Editor'), (4, 'SciPost Journal Editor-in-chief'), (5, 'SciPost Lead Editor'), (-1, 'not a professional scientist'), (-2, 'other account already exists'), (-3, 'barred from SciPost'), (-4, 'account disabled')])), + ('title', models.CharField(choices=[('PR', 'Prof.'), ('DR', 'Dr'), ('MR', 'Mr'), ('MRS', 'Mrs')], max_length=4)), + ('orcid_id', models.CharField(default='', verbose_name='ORCID id', max_length=20, blank=True, null=True)), + ('affiliation', models.CharField(verbose_name='affiliation', max_length=300)), + ('address', models.CharField(verbose_name='address', max_length=1000, blank=True)), ('personalwebpage', models.URLField(verbose_name='personal web page', blank=True)), - ('nr_report_clarity_ratings', models.IntegerField(default=0)), - ('report_clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_report_validity_ratings', models.IntegerField(default=0)), - ('report_validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_report_rigour_ratings', models.IntegerField(default=0)), - ('report_rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_report_originality_ratings', models.IntegerField(default=0)), - ('report_originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_report_significance_ratings', models.IntegerField(default=0)), - ('report_significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('nr_comments', models.PositiveSmallIntegerField(default=0)), ('nr_comment_clarity_ratings', models.IntegerField(default=0)), - ('comment_clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('comment_clarity_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), ('nr_comment_validity_ratings', models.IntegerField(default=0)), - ('comment_validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('comment_validity_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), ('nr_comment_rigour_ratings', models.IntegerField(default=0)), - ('comment_rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('comment_rigour_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), ('nr_comment_originality_ratings', models.IntegerField(default=0)), - ('comment_originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('comment_originality_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), ('nr_comment_significance_ratings', models.IntegerField(default=0)), - ('comment_significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('comment_significance_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), + ('nr_reports', models.PositiveSmallIntegerField(default=0)), + ('nr_report_clarity_ratings', models.IntegerField(default=0)), + ('report_clarity_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), + ('nr_report_validity_ratings', models.IntegerField(default=0)), + ('report_validity_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), + ('nr_report_rigour_ratings', models.IntegerField(default=0)), + ('report_rigour_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), + ('nr_report_originality_ratings', models.IntegerField(default=0)), + ('report_originality_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), + ('nr_report_significance_ratings', models.IntegerField(default=0)), + ('report_significance_rating', models.DecimalField(default=0, decimal_places=0, max_digits=3)), ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)), ], ), diff --git a/contributors/migrations/0002_auto_20151212_0919.py b/contributors/migrations/0002_auto_20151212_0919.py deleted file mode 100644 index 8984b85a20662df3f806a7e56e59126435a16ccf..0000000000000000000000000000000000000000 --- a/contributors/migrations/0002_auto_20151212_0919.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('contributors', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='contributor', - name='nr_comments', - field=models.PositiveSmallIntegerField(default=0), - ), - migrations.AddField( - model_name='contributor', - name='nr_reports', - field=models.PositiveSmallIntegerField(default=0), - ), - ] diff --git a/contributors/migrations/0002_auto_20151212_2020.py b/contributors/migrations/0002_auto_20151212_2020.py new file mode 100644 index 0000000000000000000000000000000000000000..7029f9c7b8d7e8b11e6727892da8afd734b8018c --- /dev/null +++ b/contributors/migrations/0002_auto_20151212_2020.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('contributors', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='contributor', + name='comment_originality_rating', + ), + migrations.RemoveField( + model_name='contributor', + name='comment_significance_rating', + ), + migrations.RemoveField( + model_name='contributor', + name='nr_comment_originality_ratings', + ), + migrations.RemoveField( + model_name='contributor', + name='nr_comment_significance_ratings', + ), + migrations.RemoveField( + model_name='contributor', + name='nr_report_originality_ratings', + ), + migrations.RemoveField( + model_name='contributor', + name='nr_report_significance_ratings', + ), + migrations.RemoveField( + model_name='contributor', + name='report_originality_rating', + ), + migrations.RemoveField( + model_name='contributor', + name='report_significance_rating', + ), + migrations.AddField( + model_name='contributor', + name='comment_importance_rating', + field=models.DecimalField(max_digits=3, default=0, decimal_places=0), + ), + migrations.AddField( + model_name='contributor', + name='comment_relevance_rating', + field=models.DecimalField(max_digits=3, default=0, decimal_places=0), + ), + migrations.AddField( + model_name='contributor', + name='nr_comment_importance_ratings', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='contributor', + name='nr_comment_relevance_ratings', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='contributor', + name='nr_report_importance_ratings', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='contributor', + name='nr_report_relevance_ratings', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='contributor', + name='report_importance_rating', + field=models.DecimalField(max_digits=3, default=0, decimal_places=0), + ), + migrations.AddField( + model_name='contributor', + name='report_relevance_rating', + field=models.DecimalField(max_digits=3, default=0, decimal_places=0), + ), + ] diff --git a/contributors/models.py b/contributors/models.py index 226bcfc9ec695188bd6302072959e3eb09f677d7..be6cd94d8739ea8e0248d077cb907525c9932e10 100644 --- a/contributors/models.py +++ b/contributors/models.py @@ -48,6 +48,10 @@ class Contributor(models.Model): address = models.CharField(max_length=1000, blank=True, verbose_name="address") personalwebpage = models.URLField(blank=True, verbose_name='personal web page') + nr_comment_relevance_ratings = models.IntegerField(default=0) + comment_relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) + nr_comment_importance_ratings = models.IntegerField(default=0) + comment_importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) nr_comments = models.PositiveSmallIntegerField(default=0) nr_comment_clarity_ratings = models.IntegerField(default=0) comment_clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) @@ -55,11 +59,11 @@ class Contributor(models.Model): comment_validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) nr_comment_rigour_ratings = models.IntegerField(default=0) comment_rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) - nr_comment_originality_ratings = models.IntegerField(default=0) - comment_originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) - nr_comment_significance_ratings = models.IntegerField(default=0) - comment_significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) + nr_report_relevance_ratings = models.IntegerField(default=0) + report_relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) + nr_report_importance_ratings = models.IntegerField(default=0) + report_importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) nr_reports = models.PositiveSmallIntegerField(default=0) nr_report_clarity_ratings = models.IntegerField(default=0) report_clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) @@ -67,10 +71,6 @@ class Contributor(models.Model): report_validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) nr_report_rigour_ratings = models.IntegerField(default=0) report_rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) - nr_report_originality_ratings = models.IntegerField(default=0) - report_originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) - nr_report_significance_ratings = models.IntegerField(default=0) - report_significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0) diff --git a/contributors/templates/contributors/personal_page.html b/contributors/templates/contributors/personal_page.html index 65ab2c84bf286cd27d34c97a499af9c9e4f3cc27..3bfeab56ebd85968a2ae366e6ed96e225016aa95 100644 --- a/contributors/templates/contributors/personal_page.html +++ b/contributors/templates/contributors/personal_page.html @@ -64,21 +64,21 @@ <div class="col-4"> <table class="ratings"> <th>Reports</th><th>(nr: {{ contributor.nr_reports }})</th> + <tr><td>relevance:</td><td>{{ contributor.report_relevance_rating }}% ({{ contributor.nr_report_relevance_ratings }})</td></tr> + <tr><td>importance:</td><td>{{ contributor.report_importance_rating }}% ({{ contributor.nr_report_importance_ratings }})</td></tr> <tr><td>clarity:</td><td>{{ contributor.report_clarity_rating }}% ({{ contributor.nr_report_clarity_ratings }})</td></tr> <tr><td>validity:</td><td>{{ contributor.report_validity_rating }}% ({{ contributor.nr_report_validity_ratings }})</td></tr> <tr><td>rigour:</td><td>{{ contributor.report_rigour_rating }}% ({{ contributor.nr_report_rigour_ratings }})</td></tr> - <tr><td>originality:</td><td>{{ contributor.report_originality_rating }}% ({{ contributor.nr_report_originality_ratings }})</td></tr> - <tr><td>significance:</td><td>{{ contributor.report_significance_rating }}% ({{ contributor.nr_report_significance_ratings }})</td></tr> </table> </div> <div class="col-4"> <table class="ratings"> <th>Comments</th><th>(nr: {{ contributor.nr_comments }})</th> + <tr><td>relevance:</td><td>{{ contributor.comment_relevance_rating }}% ({{ contributor.nr_comment_relevance_ratings }})</td></tr> + <tr><td>importance:</td><td>{{ contributor.comment_importance_rating }}% ({{ contributor.nr_comment_importance_ratings }})</td></tr> <tr><td>clarity:</td><td>{{ contributor.comment_clarity_rating }}% ({{ contributor.nr_comment_clarity_ratings }})</td></tr> <tr><td>validity:</td><td>{{ contributor.comment_validity_rating }}% ({{ contributor.nr_comment_validity_ratings }})</td></tr> <tr><td>rigour:</td><td>{{ contributor.comment_rigour_rating }}% ({{ contributor.nr_comment_rigour_ratings }})</td></tr> - <tr><td>originality:</td><td>{{ contributor.comment_originality_rating }}% ({{ contributor.nr_comment_originality_ratings }})</td></tr> - <tr><td>significance:</td><td>{{ contributor.comment_significance_rating }}% ({{ contributor.nr_comment_significance_ratings }})</td></tr> </table> </div> </div> diff --git a/ratings/forms.py b/ratings/forms.py index 395c1e0333ac60da87339da2af1b710aff806e22..ea218e0de7e921c8b18b421333ee45bb970297c3 100644 --- a/ratings/forms.py +++ b/ratings/forms.py @@ -3,8 +3,8 @@ from django import forms from .models import * -class RatingForm(forms.Form): - """ Abstract base class for all rating forms. """ +class PublicationTypeRatingForm(forms.Form): + """ Abstract base class for all publication-type rating forms. """ clarity = forms.ChoiceField(RATING_CHOICES) validity = forms.ChoiceField(RATING_CHOICES) rigour = forms.ChoiceField(RATING_CHOICES) @@ -14,22 +14,29 @@ class RatingForm(forms.Form): class Meta: abstract = True +class CommentTypeRatingForm(forms.Form): + """ Abstract base class for all comment-type rating forms. """ + relevance = forms.ChoiceField(RATING_CHOICES) + importance = forms.ChoiceField(RATING_CHOICES) + clarity = forms.ChoiceField(RATING_CHOICES) + validity = forms.ChoiceField(RATING_CHOICES) + rigour = forms.ChoiceField(RATING_CHOICES) -class CommentaryRatingForm(RatingForm): - pass + class Meta: + abstract = True -class CommentRatingForm(RatingForm): +class CommentaryRatingForm(PublicationTypeRatingForm): pass - -class AuthorReplyRatingForm(RatingForm): +class CommentRatingForm(CommentTypeRatingForm): pass - -class SubmissionRatingForm(RatingForm): +class AuthorReplyRatingForm(CommentTypeRatingForm): pass +class SubmissionRatingForm(PublicationTypeRatingForm): + pass -class ReportRatingForm(RatingForm): +class ReportRatingForm(CommentTypeRatingForm): pass diff --git a/ratings/migrations/0001_initial.py b/ratings/migrations/0001_initial.py index db9ed9aface1107a61c94f661a7842b8a8b8e6d7..066a7e8e8676c7a17fd0e8b66478e0568a73e785 100644 --- a/ratings/migrations/0001_initial.py +++ b/ratings/migrations/0001_initial.py @@ -7,23 +7,23 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ + ('reports', '0001_initial'), + ('commentaries', '0001_initial'), ('comments', '0001_initial'), ('contributors', '0001_initial'), - ('reports', '0001_initial'), ('submissions', '0001_initial'), - ('commentaries', '0001_initial'), ] operations = [ migrations.CreateModel( name='AuthorReplyRating', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('relevance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('importance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), ('rater', models.ForeignKey(to='contributors.Contributor')), ('reply', models.ForeignKey(to='comments.AuthorReply')), ], @@ -34,12 +34,12 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CommentaryRating', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), ('commentary', models.ForeignKey(to='commentaries.Commentary')), ('rater', models.ForeignKey(to='contributors.Contributor')), ], @@ -50,12 +50,12 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CommentRating', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('relevance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('importance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), ('comment', models.ForeignKey(to='comments.Comment')), ('rater', models.ForeignKey(to='contributors.Contributor')), ], @@ -66,12 +66,12 @@ class Migration(migrations.Migration): migrations.CreateModel( name='ReportRating', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('relevance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('importance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), ('rater', models.ForeignKey(to='contributors.Contributor')), ('report', models.ForeignKey(to='reports.Report')), ], @@ -82,12 +82,12 @@ class Migration(migrations.Migration): migrations.CreateModel( name='SubmissionRating', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), - ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), - ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')))), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), + ('clarity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('validity', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('rigour', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('originality', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), + ('significance', models.PositiveSmallIntegerField(default=0, verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), null=True)), ('rater', models.ForeignKey(to='contributors.Contributor')), ('submission', models.ForeignKey(to='submissions.Submission')), ], diff --git a/ratings/migrations/0002_auto_20151212_0800.py b/ratings/migrations/0002_auto_20151212_0800.py deleted file mode 100644 index 16dcfbd7321c80df32215d400bc8633069fa7892..0000000000000000000000000000000000000000 --- a/ratings/migrations/0002_auto_20151212_0800.py +++ /dev/null @@ -1,139 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ratings', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='authorreplyrating', - name='clarity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='authorreplyrating', - name='originality', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='authorreplyrating', - name='rigour', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='authorreplyrating', - name='significance', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='authorreplyrating', - name='validity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentaryrating', - name='clarity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentaryrating', - name='originality', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentaryrating', - name='rigour', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentaryrating', - name='significance', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentaryrating', - name='validity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentrating', - name='clarity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentrating', - name='originality', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentrating', - name='rigour', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentrating', - name='significance', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='commentrating', - name='validity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='reportrating', - name='clarity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='reportrating', - name='originality', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='reportrating', - name='rigour', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='reportrating', - name='significance', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='reportrating', - name='validity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='submissionrating', - name='clarity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='submissionrating', - name='originality', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='submissionrating', - name='rigour', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='submissionrating', - name='significance', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - migrations.AlterField( - model_name='submissionrating', - name='validity', - field=models.PositiveSmallIntegerField(verbose_name=((101, 'abstain'), (100, '100%'), (90, '90%'), (80, '80%'), (70, '70%'), (60, '60%'), (50, '50%'), (40, '40%'), (30, '30%'), (20, '20%'), (10, '10%'), (0, '0%')), default=0, null=True), - ), - ] diff --git a/ratings/models.py b/ratings/models.py index e8db16fcd5806de23a519d436b85bbdef24e345a..73c1510cc62dafd33bad524333555beb05f8ee80 100644 --- a/ratings/models.py +++ b/ratings/models.py @@ -18,8 +18,8 @@ RATING_CHOICES = ( ) -class Rating(models.Model): - """ Abstract base class for all ratings. """ +class PublicationTypeRating(models.Model): + """ Abstract base class for all ratings of publication-type objects. """ rater = models.ForeignKey(Contributor) clarity = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) validity = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) @@ -31,25 +31,35 @@ class Rating(models.Model): abstract = True -class CommentaryRating(Rating): +class CommentTypeRating(models.Model): + """ Abstract base class for all ratings of comment-type objects. """ + rater = models.ForeignKey(Contributor) + relevance = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) + importance = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) + clarity = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) + validity = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) + rigour = models.PositiveSmallIntegerField(RATING_CHOICES, default=0, null=True) + + class Meta: + abstract = True + + +class CommentaryRating(PublicationTypeRating): """ A Commentary rating is a set of numbers quantifying the original publication subject to a Commentary. """ commentary = models.ForeignKey(Commentary) - -class CommentRating(Rating): +class CommentRating(CommentTypeRating): """ A Comment rating is a set of numbers quantifying various requirements of a Comment. """ comment = models.ForeignKey(Comment) -class AuthorReplyRating(Rating): +class AuthorReplyRating(CommentTypeRating): reply = models.ForeignKey(AuthorReply) - -class ReportRating(Rating): +class ReportRating(CommentTypeRating): """ A Report rating is a set of numbers quantifying various requirements of a Report. """ report = models.ForeignKey(Report) - -class SubmissionRating(Rating): +class SubmissionRating(PublicationTypeRating): """ A Submission rating is a set of numbers quantifying various requirements of a Submission. """ submission = models.ForeignKey(Submission) diff --git a/ratings/views.py b/ratings/views.py index a1b52499ad74242d41cc6069ff3017347976372c..d98cf0f496f648b9486b00eee09f5d2c4789b357 100644 --- a/ratings/views.py +++ b/ratings/views.py @@ -41,7 +41,7 @@ def vote_on_commentary(request, commentary_id): commentary.nr_originality_ratings = CommentaryRating.objects.filter(commentary=commentary, originality__lte=100).count() commentary.nr_significance_ratings = CommentaryRating.objects.filter(commentary=commentary, significance__lte=100).count() commentary.save() - # Recalculate the ratings for this report: + # Recalculate the ratings for this commentary: commentary.clarity_rating = CommentaryRating.objects.filter(commentary=commentary, clarity__lte=100).aggregate(avg_clarity=Avg('clarity'))['avg_clarity'] commentary.validity_rating = CommentaryRating.objects.filter(commentary=commentary, validity__lte=100).aggregate(avg_validity=Avg('validity'))['avg_validity'] commentary.rigour_rating = CommentaryRating.objects.filter(commentary=commentary, rigour__lte=100).aggregate(avg_rigour=Avg('rigour'))['avg_rigour'] @@ -70,48 +70,55 @@ def vote_on_comment(request, comment_id): newrating = CommentRating ( comment = comment, rater = Contributor.objects.get(user=request.user), + relevance = form.cleaned_data['relevance'], + importance = form.cleaned_data['importance'], clarity = form.cleaned_data['clarity'], validity = form.cleaned_data['validity'], rigour = form.cleaned_data['rigour'], - originality = form.cleaned_data['originality'], - significance = form.cleaned_data['significance'], ) newrating.save() + comment.nr_relevance_ratings = CommentRating.objects.filter(comment=comment, relevance__lte=100).count() + comment.nr_importance_ratings = CommentRating.objects.filter(comment=comment, importance__lte=100).count() comment.nr_clarity_ratings = CommentRating.objects.filter(comment=comment, clarity__lte=100).count() comment.nr_validity_ratings = CommentRating.objects.filter(comment=comment, validity__lte=100).count() comment.nr_rigour_ratings = CommentRating.objects.filter(comment=comment, rigour__lte=100).count() - comment.nr_originality_ratings = CommentRating.objects.filter(comment=comment, originality__lte=100).count() - comment.nr_significance_ratings = CommentRating.objects.filter(comment=comment, significance__lte=100).count() comment.save() + # Recalculate the ratings for this comment: + comment.relevance_rating = CommentRating.objects.filter(comment=comment, relevance__lte=100).aggregate(avg_relevance=Avg('relevance'))['avg_relevance'] + comment.importance_rating = CommentRating.objects.filter(comment=comment, importance__lte=100).aggregate(avg_importance=Avg('importance'))['avg_importance'] comment.clarity_rating = CommentRating.objects.filter(comment=comment, clarity__lte=100).aggregate(avg_clarity=Avg('clarity'))['avg_clarity'] comment.validity_rating = CommentRating.objects.filter(comment=comment, validity__lte=100).aggregate(avg_validity=Avg('validity'))['avg_validity'] comment.rigour_rating = CommentRating.objects.filter(comment=comment, rigour__lte=100).aggregate(avg_rigour=Avg('rigour'))['avg_rigour'] - comment.originality_rating = CommentRating.objects.filter(comment=comment, originality__lte=100).aggregate(avg_originality=Avg('originality'))['avg_originality'] - comment.significance_rating = CommentRating.objects.filter(comment=comment, significance__lte=100).aggregate(avg_significance=Avg('significance'))['avg_significance'] comment.save() # Recalculate the comment_ratings for the comment's author: + comment.author.comment_relevance_rating = 0 + comment.author.comment_importance_rating = 0 comment.author.comment_clarity_rating = 0 comment.author.comment_validity_rating = 0 comment.author.comment_rigour_rating = 0 - comment.author.comment_originality_rating = 0 - comment.author.comment_significance_rating = 0 + nr_relevance_ratings_author = 0 + nr_importance_ratings_author = 0 nr_clarity_ratings_author = 0 nr_validity_ratings_author = 0 nr_rigour_ratings_author = 0 - nr_originality_ratings_author = 0 - nr_significance_ratings_author = 0 + relevance_rating_sum_author = 0 + importance_rating_sum_author = 0 clarity_rating_sum_author = 0 validity_rating_sum_author = 0 rigour_rating_sum_author = 0 - originality_rating_sum_author = 0 - significance_rating_sum_author = 0 comments_from_author = Comment.objects.filter(author=comment.author) for com in comments_from_author: + nr_relevance_ratings_author += com.nr_relevance_ratings + if com.nr_relevance_ratings > 0: + relevance_rating_sum_author += com.nr_relevance_ratings * com.relevance_rating + nr_importance_ratings_author += com.nr_importance_ratings + if com.nr_importance_ratings > 0: + importance_rating_sum_author += com.nr_importance_ratings * com.importance_rating nr_clarity_ratings_author += com.nr_clarity_ratings if com.nr_clarity_ratings > 0: clarity_rating_sum_author += com.nr_clarity_ratings * com.clarity_rating @@ -121,23 +128,17 @@ def vote_on_comment(request, comment_id): nr_rigour_ratings_author += com.nr_rigour_ratings if com.nr_rigour_ratings > 0: rigour_rating_sum_author += com.nr_rigour_ratings * com.rigour_rating - nr_originality_ratings_author += com.nr_originality_ratings - if com.nr_originality_ratings > 0: - originality_rating_sum_author += com.nr_originality_ratings * com.originality_rating - nr_significance_ratings_author += com.nr_significance_ratings - if com.nr_significance_ratings > 0: - significance_rating_sum_author += com.nr_significance_ratings * com.significance_rating + comment.author.nr_comment_relevance_ratings = nr_relevance_ratings_author + comment.author.comment_relevance_rating = relevance_rating_sum_author/max(1, nr_relevance_ratings_author) + comment.author.nr_comment_importance_ratings = nr_importance_ratings_author + comment.author.comment_importance_rating = importance_rating_sum_author/max(1, nr_importance_ratings_author) comment.author.nr_comment_clarity_ratings = nr_clarity_ratings_author comment.author.comment_clarity_rating = clarity_rating_sum_author/max(1, nr_clarity_ratings_author) comment.author.nr_comment_validity_ratings = nr_validity_ratings_author comment.author.comment_validity_rating = validity_rating_sum_author/max(1, nr_validity_ratings_author) comment.author.nr_comment_rigour_ratings = nr_rigour_ratings_author comment.author.comment_rigour_rating = rigour_rating_sum_author/max(1, nr_rigour_ratings_author) - comment.author.nr_comment_originality_ratings = nr_originality_ratings_author - comment.author.comment_originality_rating = originality_rating_sum_author/max(1, nr_originality_ratings_author) - comment.author.nr_comment_significance_ratings = nr_significance_ratings_author - comment.author.comment_significance_rating = significance_rating_sum_author/max(1, nr_significance_ratings_author) comment.author.save() @@ -165,48 +166,54 @@ def vote_on_report(request, report_id): newrating = ReportRating ( report = report, rater = Contributor.objects.get(user=request.user), + relevance = form.cleaned_data['relevance'], + importance = form.cleaned_data['importance'], clarity = form.cleaned_data['clarity'], validity = form.cleaned_data['validity'], rigour = form.cleaned_data['rigour'], - originality = form.cleaned_data['originality'], - significance = form.cleaned_data['significance'], ) newrating.save() + report.nr_relevance_ratings = ReportRating.objects.filter(report=report, relevance__lte=100).count() + report.nr_importance_ratings = ReportRating.objects.filter(report=report, importance__lte=100).count() report.nr_clarity_ratings = ReportRating.objects.filter(report=report, clarity__lte=100).count() report.nr_validity_ratings = ReportRating.objects.filter(report=report, validity__lte=100).count() report.nr_rigour_ratings = ReportRating.objects.filter(report=report, rigour__lte=100).count() - report.nr_originality_ratings = ReportRating.objects.filter(report=report, originality__lte=100).count() - report.nr_significance_ratings = ReportRating.objects.filter(report=report, significance__lte=100).count() report.save() # Recalculate the ratings for this report: + report.relevance_rating = ReportRating.objects.filter(report=report, relevance__lte=100).aggregate(avg_relevance=Avg('relevance'))['avg_relevance'] + report.importance_rating = ReportRating.objects.filter(report=report, importance__lte=100).aggregate(avg_importance=Avg('importance'))['avg_importance'] report.clarity_rating = ReportRating.objects.filter(report=report, clarity__lte=100).aggregate(avg_clarity=Avg('clarity'))['avg_clarity'] report.validity_rating = ReportRating.objects.filter(report=report, validity__lte=100).aggregate(avg_validity=Avg('validity'))['avg_validity'] report.rigour_rating = ReportRating.objects.filter(report=report, rigour__lte=100).aggregate(avg_rigour=Avg('rigour'))['avg_rigour'] - report.originality_rating = ReportRating.objects.filter(report=report, originality__lte=100).aggregate(avg_originality=Avg('originality'))['avg_originality'] - report.significance_rating = ReportRating.objects.filter(report=report, significance__lte=100).aggregate(avg_significance=Avg('significance'))['avg_significance'] report.save() # Recalculate the report_ratings for the report's author: + report.author.report_relevance_rating = 0 + report.author.report_importance_rating = 0 report.author.report_clarity_rating = 0 report.author.report_validity_rating = 0 report.author.report_rigour_rating = 0 - report.author.report_originality_rating = 0 - report.author.report_significance_rating = 0 + nr_relevance_ratings_author = 0 + nr_importance_ratings_author = 0 nr_clarity_ratings_author = 0 nr_validity_ratings_author = 0 nr_rigour_ratings_author = 0 - nr_originality_ratings_author = 0 - nr_significance_ratings_author = 0 + relevance_rating_sum_author = 0 + importance_rating_sum_author = 0 clarity_rating_sum_author = 0 validity_rating_sum_author = 0 rigour_rating_sum_author = 0 - originality_rating_sum_author = 0 - significance_rating_sum_author = 0 reports_from_author = Report.objects.filter(author=report.author) for rep in reports_from_author: + nr_relevance_ratings_author += rep.nr_relevance_ratings + if rep.nr_relevance_ratings > 0: + relevance_rating_sum_author += rep.nr_relevance_ratings * rep.relevance_rating + nr_importance_ratings_author += rep.nr_importance_ratings + if rep.nr_importance_ratings > 0: + importance_rating_sum_author += rep.nr_importance_ratings * rep.importance_rating nr_clarity_ratings_author += rep.nr_clarity_ratings if rep.nr_clarity_ratings > 0: clarity_rating_sum_author += rep.nr_clarity_ratings * rep.clarity_rating @@ -216,23 +223,17 @@ def vote_on_report(request, report_id): nr_rigour_ratings_author += rep.nr_rigour_ratings if rep.nr_rigour_ratings > 0: rigour_rating_sum_author += rep.nr_rigour_ratings * rep.rigour_rating - nr_originality_ratings_author += rep.nr_originality_ratings - if rep.nr_originality_ratings > 0: - originality_rating_sum_author += rep.nr_originality_ratings * rep.originality_rating - nr_significance_ratings_author += rep.nr_significance_ratings - if rep.nr_significance_ratings > 0: - significance_rating_sum_author += rep.nr_significance_ratings * rep.significance_rating + report.author.nr_report_relevance_ratings = nr_relevance_ratings_author + report.author.report_relevance_rating = relevance_rating_sum_author/max(1, nr_relevance_ratings_author) + report.author.nr_report_importance_ratings = nr_importance_ratings_author + report.author.report_importance_rating = importance_rating_sum_author/max(1, nr_importance_ratings_author) report.author.nr_report_clarity_ratings = nr_clarity_ratings_author report.author.report_clarity_rating = clarity_rating_sum_author/max(1, nr_clarity_ratings_author) report.author.nr_report_validity_ratings = nr_validity_ratings_author report.author.report_validity_rating = validity_rating_sum_author/max(1, nr_validity_ratings_author) report.author.nr_report_rigour_ratings = nr_rigour_ratings_author report.author.report_rigour_rating = rigour_rating_sum_author/max(1, nr_rigour_ratings_author) - report.author.nr_report_originality_ratings = nr_originality_ratings_author - report.author.report_originality_rating = originality_rating_sum_author/max(1, nr_originality_ratings_author) - report.author.nr_report_significance_ratings = nr_significance_ratings_author - report.author.report_significance_rating = significance_rating_sum_author/max(1, nr_significance_ratings_author) report.author.save() return HttpResponseRedirect(reverse('ratings:vote_on_report_ack')) diff --git a/reports/migrations/0001_initial.py b/reports/migrations/0001_initial.py index 2c3eb91466b38c76905e6a0bda95c8aea4cc7777..54a3d2c4eab8cd4bca3b91ad6301df7b6cfc8416 100644 --- a/reports/migrations/0001_initial.py +++ b/reports/migrations/0001_initial.py @@ -7,15 +7,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('contributors', '0001_initial'), ('submissions', '0001_initial'), + ('contributors', '0001_initial'), ] operations = [ migrations.CreateModel( name='Report', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), ('status', models.SmallIntegerField(default=0)), ('qualification', models.PositiveSmallIntegerField(default=0)), ('strengths', models.TextField()), @@ -23,20 +23,20 @@ class Migration(migrations.Migration): ('report', models.TextField()), ('requested_changes', models.TextField()), ('recommendation', models.SmallIntegerField(choices=[(1, 'Publish as Tier I (top 10% of papers in this journal)'), (2, 'Publish as Tier II (top 50% of papers in this journal)'), (3, 'Publish as Tier III (meets the criteria of this journal)'), (-1, 'Ask for minor revision'), (-2, 'Ask for major revision'), (-3, 'Reject')])), - ('date_invited', models.DateTimeField(null=True, verbose_name='date invited', blank=True)), + ('date_invited', models.DateTimeField(verbose_name='date invited', blank=True, null=True)), ('date_submitted', models.DateTimeField(verbose_name='date submitted')), + ('nr_relevance_ratings', models.IntegerField(default=0)), + ('relevance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), + ('nr_importance_ratings', models.IntegerField(default=0)), + ('importance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_clarity_ratings', models.IntegerField(default=0)), - ('clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('clarity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_validity_ratings', models.IntegerField(default=0)), - ('validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('validity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_rigour_ratings', models.IntegerField(default=0)), - ('rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_originality_ratings', models.IntegerField(default=0)), - ('originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), - ('nr_significance_ratings', models.IntegerField(default=0)), - ('significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('rigour_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('author', models.ForeignKey(to='contributors.Contributor')), - ('invited_by', models.ForeignKey(null=True, to='contributors.Contributor', related_name='invited_by', blank=True)), + ('invited_by', models.ForeignKey(null=True, to='contributors.Contributor', blank=True, related_name='invited_by')), ('submission', models.ForeignKey(to='submissions.Submission')), ], ), diff --git a/reports/migrations/0002_auto_20151212_0919.py b/reports/migrations/0002_auto_20151212_0919.py deleted file mode 100644 index 05f181a4b8541831dae80f81173fc6cfca0293ca..0000000000000000000000000000000000000000 --- a/reports/migrations/0002_auto_20151212_0919.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('reports', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='report', - name='clarity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='report', - name='originality_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='report', - name='rigour_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='report', - name='significance_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='report', - name='validity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - ] diff --git a/reports/models.py b/reports/models.py index e796ac4fc657057279f29df5492fc4d671269ed7..ff721c766c7d0d59cb56a5fe2257b0afafd711a9 100644 --- a/reports/models.py +++ b/reports/models.py @@ -48,15 +48,15 @@ class Report(models.Model): invited_by = models.ForeignKey(Contributor, blank=True, null=True, related_name='invited_by') date_submitted = models.DateTimeField('date submitted') # Aggregates of ratings applied to this report: + nr_relevance_ratings = models.IntegerField(default=0) + relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) + nr_importance_ratings = models.IntegerField(default=0) + importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_clarity_ratings = models.IntegerField(default=0) clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_validity_ratings = models.IntegerField(default=0) validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) nr_rigour_ratings = models.IntegerField(default=0) rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_originality_ratings = models.IntegerField(default=0) - originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) - nr_significance_ratings = models.IntegerField(default=0) - significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0, null=True) diff --git a/submissions/migrations/0001_initial.py b/submissions/migrations/0001_initial.py index cd2dae6ac37d296744cbb78fcf8fd5940d0214b5..6c80daf512cf0e53f826e284f7055d11e1b9235d 100644 --- a/submissions/migrations/0001_initial.py +++ b/submissions/migrations/0001_initial.py @@ -15,11 +15,11 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Submission', fields=[ - ('id', models.AutoField(serialize=False, verbose_name='ID', auto_created=True, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', auto_created=True, primary_key=True, serialize=False)), ('vetted', models.BooleanField(default=False)), - ('submitted_to_journal', models.CharField(max_length=30, choices=[('SciPost Physics Select', 'SciPost Physics Select'), ('SciPost Physics Letters', 'SciPost Physics Letters'), ('SciPost Physics X', 'SciPost Physics X (cross-division)'), ('SciPost Physics', 'SciPost Physics (Experimental, Theoretical and Computational)'), ('SciPost Physics Lecture Notes', 'SciPost Physics Lecture Notes')])), - ('domain', models.CharField(max_length=1, choices=[('E', 'Experimental'), ('T', 'Theoretical'), ('C', 'Computational')], default='E')), - ('specialization', models.CharField(max_length=1, choices=[('A', 'Atomic, Molecular and Optical Physics'), ('B', 'Biophysics'), ('C', 'Condensed Matter Physics'), ('F', 'Fluid Dynamics'), ('G', 'Gravitation, Cosmology and Astroparticle Physics'), ('H', 'High-Energy Physics'), ('M', 'Mathematical Physics'), ('N', 'Nuclear Physics'), ('Q', 'Quantum Statistical Mechanics'), ('S', 'Statistical and Soft Matter Physics')])), + ('submitted_to_journal', models.CharField(choices=[('SciPost Physics Select', 'SciPost Physics Select'), ('SciPost Physics Letters', 'SciPost Physics Letters'), ('SciPost Physics X', 'SciPost Physics X (cross-division)'), ('SciPost Physics', 'SciPost Physics (Experimental, Theoretical and Computational)'), ('SciPost Physics Lecture Notes', 'SciPost Physics Lecture Notes')], max_length=30)), + ('domain', models.CharField(default='E', choices=[('E', 'Experimental'), ('T', 'Theoretical'), ('C', 'Computational')], max_length=1)), + ('specialization', models.CharField(choices=[('A', 'Atomic, Molecular and Optical Physics'), ('B', 'Biophysics'), ('C', 'Condensed Matter Physics'), ('F', 'Fluid Dynamics'), ('G', 'Gravitation, Cosmology and Astroparticle Physics'), ('H', 'High-Energy Physics'), ('M', 'Mathematical Physics'), ('N', 'Nuclear Physics'), ('Q', 'Quantum Statistical Mechanics'), ('S', 'Statistical and Soft Matter Physics')], max_length=1)), ('status', models.SmallIntegerField(choices=[(0, 'unassigned'), (1, 'editor in charge assigned'), (2, 'under review'), (3, 'reviewed, peer checking period'), (4, 'reviewed, peer checked, editorial decision pending'), (5, 'editorial decision')])), ('open_for_reporting', models.BooleanField(default=True)), ('open_for_commenting', models.BooleanField(default=True)), @@ -29,17 +29,18 @@ class Migration(migrations.Migration): ('arxiv_link', models.URLField(verbose_name='arXiv link (including version nr)')), ('submission_date', models.DateField(verbose_name='date of original publication')), ('nr_clarity_ratings', models.IntegerField(default=0)), - ('clarity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('clarity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_validity_ratings', models.IntegerField(default=0)), - ('validity_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('validity_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_rigour_ratings', models.IntegerField(default=0)), - ('rigour_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('rigour_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_originality_ratings', models.IntegerField(default=0)), - ('originality_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('originality_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('nr_significance_ratings', models.IntegerField(default=0)), - ('significance_rating', models.DecimalField(max_digits=3, default=0, decimal_places=0)), + ('significance_rating', models.DecimalField(default=0, decimal_places=0, null=True, max_digits=3)), ('latest_activity', models.DateTimeField(default=django.utils.timezone.now)), - ('editor_in_charge', models.ForeignKey(null=True, to='contributors.Contributor', related_name='editor_in_charge', blank=True)), + ('authors', models.ManyToManyField(related_name='authors_sub', blank=True, null=True, to='contributors.Contributor')), + ('editor_in_charge', models.ForeignKey(null=True, to='contributors.Contributor', blank=True, related_name='editor_in_charge')), ('submitted_by', models.ForeignKey(to='contributors.Contributor')), ], ), diff --git a/submissions/migrations/0002_auto_20151212_0919.py b/submissions/migrations/0002_auto_20151212_0919.py deleted file mode 100644 index 685c061ac89dc83ecae4f99bbfd1910d3be2f532..0000000000000000000000000000000000000000 --- a/submissions/migrations/0002_auto_20151212_0919.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('submissions', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='submission', - name='clarity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='submission', - name='originality_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='submission', - name='rigour_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='submission', - name='significance_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - migrations.AlterField( - model_name='submission', - name='validity_rating', - field=models.DecimalField(default=0, decimal_places=0, max_digits=3, null=True), - ), - ] diff --git a/submissions/templates/submissions/submission_detail.html b/submissions/templates/submissions/submission_detail.html index ec0d02d721d62ff798a702e23a24ddbdb2adf963..16d634a57dcf92c68b3e20e9f9862d2c2a3d2ba8 100644 --- a/submissions/templates/submissions/submission_detail.html +++ b/submissions/templates/submissions/submission_detail.html @@ -77,11 +77,11 @@ <div class="col-8"> <ul class="ratingsdata"> <li>Ratings: </li> + <li>relevance: {{ report.relevance_rating }}% ({{ report.nr_relevance_ratings }})</li> + <li>importance: {{ report.importance_rating }}% ({{ report.nr_importance_ratings }})</li> <li>clarity: {{ report.clarity_rating }}% ({{ report.nr_clarity_ratings }})</li> <li>validity: {{ report.validity_rating }}% ({{ report.nr_validity_ratings }})</li> <li>rigour: {{ report.rigour_rating }}% ({{ report.nr_rigour_ratings }})</li> - <li>originality: {{ report.originality_rating }}% ({{ report.nr_originality_ratings }})</li> - <li>significance: {{ report.significance_rating }}% ({{ report.nr_significance_ratings }})</li> </ul> </div> </div> @@ -174,11 +174,11 @@ <div class="col-8"> <ul class="ratingsdata"> <li>Ratings: </li> + <li>relevance: {{ comment.relevance_rating }}% ({{ comment.nr_relevance_ratings }})</li> + <li>importance: {{ comment.importance_rating }}% ({{ comment.nr_importance_ratings }})</li> <li>clarity: {{ comment.clarity_rating }}% ({{ comment.nr_clarity_ratings }})</li> <li>validity: {{ comment.validity_rating }}% ({{ comment.nr_validity_ratings }})</li> <li>rigour: {{ comment.rigour_rating }}% ({{ comment.nr_rigour_ratings }})</li> - <li>originality: {{ comment.originality_rating }}% ({{ comment.nr_originality_ratings }})</li> - <li>significance: {{ comment.significance_rating }}% ({{ comment.nr_significance_ratings }})</li> </ul> </div> </div>