예제 #1
0
 def form_valid(self, form):
     form.instance.requester = self.request.user.member
     form.instance.inventory = get_object_or_404(
         Inventory, suggestions=True, name__iexact=self.kwargs['inv'])
     give_achievement_once(self.request.user.member,
                           "suggested_game",
                           request=self.request)
     return super().form_valid(form)
예제 #2
0
 def post(self, request, *args, **kwargs):
     # Login required but only for post
     if not request.user.is_authenticated:
         self.handle_no_permission()
     else:
         give_achievement_once(request.user.member,
                               "created_thread",
                               request=request)
         return super().post(request, *args, **kwargs)
예제 #3
0
def send_message(member, thread, message, request=None):
    # Send the notification to everyone in the thread except the sender.
    url = reverse('message:message_thread', args=[thread.id])
    for receiver in thread.participants.all():
        message_txt = 'You got a message from ' + \
            str(member.equiv_user.username)
        if thread.title:
            message_txt += ' in chat "' + str(thread.title) + '"'
        message_txt += ': ' + visible(message)
        if member != receiver:
            notify(receiver, NotifType.MESSAGE, message_txt, url)
    give_achievement_once(member, "messaged", request=request)
    return Message.objects.create(sender=member,
                                  thread=thread,
                                  content=message)
예제 #4
0
 def post(self, request, *args, **kwargs):
     # Login required but only for post
     if not request.user.is_authenticated:
         self.handle_no_permission()
     else:
         thread = get_object_or_404(Thread, id=self.kwargs['thread'])
         if thread.is_locked and not request.user.has_perm(
                 'forum.add_response'):
             add_message(
                 request, constants.ERROR,
                 "Sorry, this thread is locked. No responses can be created"
             )
             self.handle_no_permission()
         else:
             give_achievement_once(request.user.member,
                                   "replied_forum",
                                   request=request)
             return super().post(request, *args, **kwargs)
예제 #5
0
 def form_valid(self, form):
     form.instance.creator = self.request.user.member
     response = super().form_valid(form)
     for i in form.cleaned_data['tag_list']:
         tag, new = Tag.objects.get_or_create(name=i)
         self.object.tags.add(tag)
     self.object.game_masters.add(self.request.user.member)
     self.object.save()
     add_message(self.request, messages.SUCCESS,
                 "Event successfully created")
     give_achievement_once(self.request.user.member,
                           "first_event", request=self.request)
     if Rpg.objects.filter(creator=self.request.user.member).count() >= 5:
         give_achievement_once(self.request.user.member,
                               "five_events", request=self.request)
     if self.object.published:
         notify_rpg(self.object)
     return response
    def handle(self, *args, **options):
        for m in Member.objects.all():
            rpgs = m.rpgs_owned.order_by("created_at")
            if len(rpgs) > 0:
                give_achievement_once(m, "first_event", rpgs[0].created_at)
            if len(rpgs) > 4:
                give_achievement_once(m, "five_events", rpgs[4].created_at)
            age_achievements(m)
            first_thread = m.thread_set.order_by("pub_date").first()
            if first_thread:
                give_achievement_once(m, "created_thread",
                                      first_thread.pub_date)
            first_response = m.response_set.order_by("pub_date").first()
            if first_response:
                give_achievement_once(m, "replied_forum",
                                      first_response.pub_date)
            first_message = m.message_set.order_by("timestamp").first()
            if first_message:
                give_achievement_once(m, "messaged", first_message.timestamp)
            if m.suggestion_set.count() > 0:
                give_achievement_once(m, "suggested_game")
            if m.discord:
                give_achievement_once(m, "discord")
            if m.pronoun:
                give_achievement_once(m, "pronoun")
            if m.is_soc_member and m.membership.active:
                if not (m.achievementaward_set.filter(
                        achievement__trigger_name="verify_membership").filter(
                            achieved_at__gte=m.membership.checked -
                            timedelta(days=7)).exists()):
                    give_achievement(m, "verify_membership",
                                     m.membership.checked)

        self.stdout.write('Achievements Migrated')