Merge branch 'two-small-fixes' into 'master'
Two small fixes See merge request !20
This commit is contained in:
commit
5a97c93861
2 changed files with 13 additions and 22 deletions
10
README.rst
10
README.rst
|
@ -4,7 +4,7 @@ symposion_app
|
||||||
At this time, considerations have not been made to have the django project run
|
At this time, considerations have not been made to have the django project run
|
||||||
without additional infrastructure.
|
without additional infrastructure.
|
||||||
|
|
||||||
This can be configured in the future by switching the defualt
|
This can be configured in the future by switching the default
|
||||||
DEFAULT_FILE_STORAGE django default, and properly configuring django to load
|
DEFAULT_FILE_STORAGE django default, and properly configuring django to load
|
||||||
subsequent configuration to switch this back to GCS on run in our testing
|
subsequent configuration to switch this back to GCS on run in our testing
|
||||||
and production environments.
|
and production environments.
|
||||||
|
@ -28,12 +28,12 @@ GCS
|
||||||
SAML2
|
SAML2
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
Please familurise yourself with Shibboleth configuraiton and the general
|
Please familiarise yourself with Shibboleth configuration and the general
|
||||||
flow of how to register a SP with an IDP.
|
flow of how to register a SP with an IDP.
|
||||||
|
|
||||||
If you send the SP metadata staticly, validdity time must be removed.
|
If you send the SP metadata statically, validity time must be removed.
|
||||||
|
|
||||||
You will also need to register your IDP metadata here either staticly or
|
You will also need to register your IDP metadata here either statically or
|
||||||
remotely updated.
|
remotely updated.
|
||||||
|
|
||||||
You may consider testing with testshib.
|
You may consider testing with testshib.
|
||||||
|
@ -48,7 +48,7 @@ we wish for without having to do anything ugly. This may require a newer
|
||||||
version of pip than is packaged with distros virtualenv.
|
version of pip than is packaged with distros virtualenv.
|
||||||
|
|
||||||
Note that this application is python 3 only so you must create your virtualenv
|
Note that this application is python 3 only so you must create your virtualenv
|
||||||
with a python3 interpretter.
|
with a python3 interpreter.
|
||||||
|
|
||||||
- ``virtualenv -p `which python3` venv``
|
- ``virtualenv -p `which python3` venv``
|
||||||
- ``source ./venv/bin/activate``
|
- ``source ./venv/bin/activate``
|
||||||
|
|
25
vendor/symposion/reviews/models.py
vendored
25
vendor/symposion/reviews/models.py
vendored
|
@ -19,20 +19,6 @@ from symposion.proposals.models import ProposalBase
|
||||||
from symposion.schedule.models import Presentation
|
from symposion.schedule.models import Presentation
|
||||||
|
|
||||||
|
|
||||||
def score_expression():
|
|
||||||
score = (
|
|
||||||
(Decimal(2) * F("plus_two") + F("plus_one")) -
|
|
||||||
(F("minus_one") + Decimal(2) * F("minus_two"))
|
|
||||||
) / (
|
|
||||||
F("vote_count") * Decimal(1)
|
|
||||||
)
|
|
||||||
|
|
||||||
return Case(
|
|
||||||
When(vote_count=0, then=Value("0")), # no divide by zero
|
|
||||||
default=score,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Votes(object):
|
class Votes(object):
|
||||||
ABSTAIN = "0"
|
ABSTAIN = "0"
|
||||||
PLUS_TWO = "+2"
|
PLUS_TWO = "+2"
|
||||||
|
@ -196,7 +182,7 @@ class Review(models.Model):
|
||||||
else:
|
else:
|
||||||
# self is not the latest review so we just need to decrement
|
# self is not the latest review so we just need to decrement
|
||||||
# the comment count
|
# the comment count
|
||||||
self.proposal.result.comment_count = models.F("comment_count") - 1
|
self.proposal.result.comment_count = F("comment_count") - 1
|
||||||
self.proposal.result.save()
|
self.proposal.result.save()
|
||||||
# in all cases we need to delete the review; let's do it!
|
# in all cases we need to delete the review; let's do it!
|
||||||
super(Review, self).delete()
|
super(Review, self).delete()
|
||||||
|
@ -274,6 +260,12 @@ class ProposalResult(models.Model):
|
||||||
result, created = cls._default_manager.get_or_create(proposal=proposal)
|
result, created = cls._default_manager.get_or_create(proposal=proposal)
|
||||||
result.update_vote()
|
result.update_vote()
|
||||||
|
|
||||||
|
def calculate_score(self):
|
||||||
|
if self.vote_count == 0:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return ((2 * self.plus_two + self.plus_one) - (2 * self.minus_two + self.minus_one)) / self.vote_count
|
||||||
|
|
||||||
def update_vote(self, *a, **k):
|
def update_vote(self, *a, **k):
|
||||||
proposal = self.proposal
|
proposal = self.proposal
|
||||||
self.comment_count = Review.objects.filter(proposal=proposal).count()
|
self.comment_count = Review.objects.filter(proposal=proposal).count()
|
||||||
|
@ -296,9 +288,8 @@ class ProposalResult(models.Model):
|
||||||
self.minus_one = vote_count[VOTES.MINUS_ONE]
|
self.minus_one = vote_count[VOTES.MINUS_ONE]
|
||||||
self.minus_two = vote_count[VOTES.MINUS_TWO]
|
self.minus_two = vote_count[VOTES.MINUS_TWO]
|
||||||
self.vote_count = sum(i[1] for i in vote_count.items()) - self.abstain
|
self.vote_count = sum(i[1] for i in vote_count.items()) - self.abstain
|
||||||
|
self.score = self.calculate_score()
|
||||||
self.save()
|
self.save()
|
||||||
model = self.__class__
|
|
||||||
model._default_manager.filter(pk=self.pk).update(score=score_expression())
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("proposal_result")
|
verbose_name = _("proposal_result")
|
||||||
|
|
Loading…
Add table
Reference in a new issue