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