コード例 #1
0
    def save(self, *args, **kwargs):
        """custom save method."""

        self.check_admin_link()

        if self.social_bonus_awarded:
            # only awarding social bonus
            super(ActionMember, self).save(args, kwargs)
            return

        if self.approval_status == u"rejected":
            self.award_date = None
            super(ActionMember, self).save(args, kwargs)

            self._handle_activity_notification(self.approval_status)
        else:
            if self.approval_status == u"pending":
                # Mark pending items as submitted.

                self.submission_date = datetime.datetime.today()

                if self.action.type == "commitment" and not self.completion_date:
                    self.completion_date = self.submission_date + datetime.timedelta(
                        days=self.action.commitment.duration
                    )

                super(ActionMember, self).save(args, kwargs)

                self._award_signup_points()

            else:  # is approved
                if not self.points_awarded:
                    self.points_awarded = self.action.point_value

                # Record dates.
                self.award_date = datetime.datetime.today()

                if self.submission_date:
                    if self.action.type in ("event", "excursion"):
                        # this is an event with signup
                        # must save before awarding point due to the generic foreign key relation
                        super(ActionMember, self).save(args, kwargs)
                        self._award_possible_reverse_penalty_points()
                else:
                    # always make sure the submission_date is set
                    self.submission_date = self.award_date

                # must save before awarding point due to the generic foreign key relation
                super(ActionMember, self).save(args, kwargs)
                self._award_points()

                self.social_bonus_awarded = self._award_possible_social_bonus()
                if self.social_bonus_awarded:
                    super(ActionMember, self).save(args, kwargs)

                self._handle_activity_notification(self.approval_status)

        self.post_to_wall()
        self.invalidate_cache()
        badges.award_possible_badges(self.user.get_profile(), "smartgrid")
コード例 #2
0
    def track_login(self, request):
        """Checks if the user is logged in and updates the tracking field."""
        profile = request.user.get_profile()
        last_visit = request.user.get_profile().last_visit_date
        today = datetime.date.today()

        if last_visit:
            day_diff = today - last_visit
        else:
            day_diff = datetime.timedelta(days=30)

        if day_diff > datetime.timedelta(days=0):
            # if it is the first visit of the day
            if day_diff == datetime.timedelta(days=1):
                # consecutive day visit, increase daily login count
                profile.daily_visit_count += 1
            else:
                # gap day visit, reset the daily login count.
                profile.daily_visit_count = 1
            profile.last_visit_date = today
            profile.save()

            if last_visit:
                # award possible badge if it is the first visit of the day and
                # not the first visit ever
                badges.award_possible_badges(profile)

        return None
コード例 #3
0
ファイル: models.py プロジェクト: pavelpromin/makahiki
    def save(self, *args, **kwargs):
        """custom save method."""

        self.check_admin_link()

        if self.social_bonus_awarded:
            # only awarding social bonus
            super(ActionMember, self).save(args, kwargs)
            return

        if self.approval_status == u"rejected":
            self.award_date = None
            super(ActionMember, self).save(args, kwargs)

            self._handle_activity_notification(self.approval_status)
        else:
            if self.approval_status == u"pending":
                # Mark pending items as submitted.

                self.submission_date = datetime.datetime.today()

                if self.action.type == "commitment" and not self.completion_date:
                    self.completion_date = self.submission_date + \
                        datetime.timedelta(days=self.action.commitment.commitment_length)

                super(ActionMember, self).save(args, kwargs)

                self._award_signup_points()

            else:  # is approved
                if not self.points_awarded:
                    self.points_awarded = self.action.point_value

                # Record dates.
                self.award_date = datetime.datetime.today()

                if self.submission_date:
                    if self.action.type in ("event", "excursion"):
                        # this is an event with signup
                        # must save before awarding point due to the generic foreign key relation
                        super(ActionMember, self).save(args, kwargs)
                        self._award_possible_reverse_penalty_points()
                else:
                    # always make sure the submission_date is set
                    self.submission_date = self.award_date

                # must save before awarding point due to the generic foreign key relation
                super(ActionMember, self).save(args, kwargs)
                self._award_points()

                self.social_bonus_awarded = self._award_possible_social_bonus()
                if self.social_bonus_awarded:
                    super(ActionMember, self).save(args, kwargs)

                self._handle_activity_notification(self.approval_status)

        self.post_to_wall()
        self.invalidate_cache()
        badges.award_possible_badges(self.user.profile, "smartgrid")