def form_valid(self, form): instance = form.save() FeedPhoto.objects.filter(instagram=instance).delete() if self.request.FILES: for f in self.request.FILES.getlist('images'): feed_photo = FeedPhoto(instagram=instance, image=f) feed_photo.save() return super().form_valid(form)
def form_valid(self, form): instance = form.save() self.message = '{}님이 짝모했어요!. 아래 링크에서 확인해주세요!'.format(self.request.user.name) if self.request.FILES: for f in self.request.FILES.getlist('images'): feed_photo = FeedPhoto(instagram=instance, image=f) feed_photo.save() # 위짝지가 반드시 포함되어 있으므로, 1을 빼면 참가한 아래짝지 수이다. instance.num_down_partner = len(self.request.POST.getlist('participants')) - 1 instance.check_point() return super(PartnerMeetingCreateView, self).form_valid(form)
def form_valid(self, form): instance = form.save() # 기존 점수를 제거해주고, 업데이트된 정보로 점수를 부여한다. instance.partner.raise_score(-instance.point) instance.num_down_partner = len(self.request.POST.getlist('participants')) - 1 instance.check_point() FeedPhoto.objects.filter(instagram=instance).delete() if self.request.FILES: for f in self.request.FILES.getlist('images'): feed_photo = FeedPhoto(instagram=instance, image=f) feed_photo.save() return super(PartnerMeetingUpdateView, self).form_valid(form)
def form_valid(self, form): instance = form.save() latest_os = OperationScheme.latest() year, semester = latest_os.current_year, latest_os.current_semester # 실제 참여한 사람으로만 참가자 목록을 업데이트한다. participants = [] for pk in self.request.POST.getlist('participants'): participants.append( ActiveUser.objects.get(user=User.objects.get(pk=pk), active_year=year, active_semester=semester)) instance.coffee_meeting.participants.set(participants) participants_len = len(participants) # 커모에 참여한 사람의 점수를 업데이트한다. if participants_len > 0: group = Partner.related_partner_activeuser(participants[0]) # 커모가 한 짝지 그룹으로만 이루어지지 않은 경우 점수를 올린다. if group is None or participants_len != len( set(participants).intersection( group.containing_active_users())): # 참가자가 4명 이상일 경우만 점수를 올린다. if participants_len >= 4: instance.coffee_meeting.update_partner_score() # 한 짝지 그룹으로만 이루어진 경우 짝모로 계산한다. 윗짝지가 존재해야한다. elif group.up_partner in participants: extra = 0 num_partner = group.down_partner_count() + 1 # 몇 인조인지 확인 if num_partner == participants_len: if num_partner == 2: extra = latest_os.extra_2_point elif num_partner == 3: extra = latest_os.extra_3_point elif num_partner == 4: extra = latest_os.extra_4_point # 아래짝지 수 * 커피점수(모두 모였으면 추가점수까지)만큼 점수를 부여한다. group.raise_score((participants_len - 1) * latest_os.coffee_point + extra) if self.request.FILES: for f in self.request.FILES.getlist('images'): feed_photo = FeedPhoto(instagram=instance, image=f) feed_photo.save() return super().form_valid(form)