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")
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
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")