示例#1
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if request.user.is_authenticated:
            if 'team' in request.session:
                team = Team.objects.filter(pk=request.session['team']).first()
            else:
                team = TeamRelationToUser.objects.get(user=request.user).team
            competition = Competition.objects.get(pk=kwargs['pk'])
            if competition.canTeamRegister(team, request.user) == -1:
                CompetitionTeam.objects.filter(
                    team=team, competition=competition).delete()
                for rel in TeamRelationToUser.objects.filter(team=team).all():
                    for distance in Distance.objects.filter(
                            competition=competition).all():
                        UserDistance.objects.filter(
                            user=rel.user, distance=distance).delete()
                    delete_badge(rel.user, competition)

                request.session['alerts'] = [{
                    'type':
                    'success',
                    'message':
                    _('Your team has been unregistrated successful!')
                }]

        return redirect('/')
示例#2
0
    def post(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated:
            return redirect('/')
        competition = Competition.objects.get(pk=kwargs['pk'])
        user = get_object_or_404(User, pk=kwargs['user_id'])
        distances = Distance.objects.filter(competition=competition)
        data = request.POST

        for distance in distances:
            try:
                user_distance = get_object_or_404(UserDistance,
                                                  user=user,
                                                  distance=distance)
                if data['time_{}'.format(distance.id)]:
                    user_distance.pre_time = get_time_int(
                        data['time_{}'.format(distance.id)])
                    user_distance.save()
                else:
                    user_distance.delete()
            except Http404:
                if data['time_{}'.format(distance.id)]:
                    UserDistance.objects.create(user=user,
                                                distance=distance,
                                                pre_time=get_time_int(
                                                    data['time_{}'.format(
                                                        distance.id)]),
                                                is_finished=True)

        return redirect('/competition/{}/user/distances/{}'.format(
            competition.pk, user.pk))
示例#3
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        competition = Competition.objects.get(pk=kwargs['comp'])
        if request.user.is_authenticated and (
                request.user.is_admin or request.user.id == int(kwargs['pk'])
                or competition.created_by == request.user.id):
            try:
                user = User.objects.get(pk=kwargs['pk'])

                badge_path = getBadge(user, competition)
                file_wrapper = FileWrapper(open(badge_path, 'rb'))
                file_mimetype = mimetypes.guess_type(badge_path)
                response = HttpResponse(file_wrapper,
                                        content_type=file_mimetype)
                response['X-Sendfile'] = badge_path
                response['Content-Length'] = os.stat(badge_path).st_size
                response[
                    'Content-Disposition'] = 'attachment; filename={}'.format(
                        '{}\'s_badge.png'.format(
                            cyrtranslit.to_latin(
                                remove_ukrainian(user.get_full_name()), 'ru')))
                return response
            except Exception as ex:
                pass
        raise Http404
示例#4
0
 def post(self, request):
     activate_language(request.session)
     if request.POST['psw'] == request.POST['psw-repeat']:
         try:
             get_object_or_404(User, email=request.POST['email'])
             request.session['alerts'] = [{'type': 'error', 'message': _('User with this email is already exist.')}]
             return render(request, self.template_name, get_session_attributes(request))
         except Http404:
             pass
         user = User.objects.create_user(request.POST['email'],
                                         request.POST['first_name'],
                                         request.POST['last_name'],
                                         request.POST['psw'],
                                         )
         Profile.objects.create(user=user, city=request.POST['city'])
         # if not settings.DEBUG:
         #     with open(settings.BASE_DIR + '/auth_main/templates/email/email_confirm_{}.html'.format(translation.get_language())) as file:
         #         link = request.build_absolute_uri() + '/verificate/' + user.profile.verification_code
         #         send_mail('Q-ORCA email confirm', '',
         #                   settings.EMAIL_HOST_USER,
         #                   [user.email, ], fail_silently=settings.DEBUG,
         #                   html_message=file.read().replace('{link}', link))
         # else:
         user.profile.is_verificated = True
         user.profile.save()
         # request.session['alerts'] = [{'type': 'success', 'message': _('We have sent verification link to your email. Please, follow it to verificate your email. If there is no letter, please check "spam" in your email.')}]
         return redirect('/')
     request.session['alerts'] = [{'type': 'error', 'message': _('Passwords are not equal each other.')}]
     return render(request, self.template_name, get_session_attributes(request))
示例#5
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        opt = {}

        day = int(kwargs['day'])
        if day not in [1, 2]:
            raise Http404
        if request.user.is_authenticated and request.user.profile.role == 2:
            competition = get_object_or_404(Competition, id=kwargs['pk'])
            if competition.created_by == request.user.id or request.user.is_admin:
                users_distances, last_swim = get_swim_params(
                    int(kwargs['swim']), competition, day)
                opt['users_distances'] = users_distances
                opt['distance'] = users_distances[0].distance
                opt['swim_n'] = kwargs['swim']
                opt['day'] = _('Day {}'.format(day))
                opt['day_n'] = day
                opt['is_next_day'] = competition.count_days > day
                opt['is_prev_day'] = day > 1
                opt['is_next'] = last_swim > int(kwargs['swim'])
                opt['is_prev'] = int(kwargs['swim']) - 1 != 0
                opt['competition'] = competition
                return render(request, self.template_name,
                              dict(opt, **get_session_attributes(request)))

        raise Http404
示例#6
0
    def post(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated or request.user.profile.role == 1:
            raise Http404

        if int(kwargs['day']) not in [1, 2]:
            raise Http404

        competition = get_object_or_404(Competition, pk=kwargs['pk'])
        if competition.is_creating_finished:
            raise Http404
        for i in range(10):
            if request.POST['length_' + str(i)]:
                Distance.objects.create(competition=competition,
                                        type=request.POST['type_' + str(i)],
                                        length=request.POST['length_' +
                                                            str(i)],
                                        day=kwargs['day'])
            else:
                break

        if int(kwargs['day']) != competition.count_days:
            return redirect('/core/competition/{}/create/day/2'.format(
                competition.pk))
        else:
            competition.is_creating_finished = True
            competition.save()
            return redirect('/core/competition/{}'.format(competition.pk))
示例#7
0
    def post(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated:
            return redirect('/')
        competition = Competition.objects.get(pk=kwargs['pk'])
        if competition.canUserRegister(request.user) == 1:
            for x in range(10):
                time_name = 'time_{}'.format(x)
                if time_name in request.POST:
                    if request.POST[time_name]:
                        try:
                            time = get_time_int(request.POST[time_name])
                        except ValueError:
                            request.session['alerts'] = [{
                                'type':
                                'error',
                                'message':
                                _('Wrong time format')
                            }]
                            return redirect('/core/competition/{}'.format(
                                competition.pk))
                        distance = Distance.objects.get(
                            pk=request.POST['distance_id_{}'.format(x)])
                        UserDistance.objects.create(
                            distance=distance,
                            user=request.user,
                            pre_time=time,
                            result_time=None,
                        )
            if int(kwargs['rel']) == 0:
                obj = CompetitionUser.objects.create(user=request.user,
                                                     competition=competition)
            else:
                obj = get_object_or_404(CompetitionUser, pk=kwargs['rel'])
        else:
            request.session['alerts'] = [{
                'type':
                'error',
                'message':
                _('You have been already registrated on this competition!')
            }]
            return redirect('/core/competition/{}'.format(competition.pk))

        if int(kwargs['day']) != competition.count_days:
            return redirect('/core/competition/{}/signup/single/2/{}'.format(
                competition.pk, obj.pk))
        else:
            obj.is_complete = True
            obj.save()
            getBadge(request.user, competition)
            request.session['alerts'] = [{
                'type':
                'success',
                'message':
                _('You have been registrated successful!')
            }]
            return redirect('/core/competition/{}'.format(competition.pk))
示例#8
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if 'team' in request.session:
            return redirect('/core/teams/{}'.format(
                request.session['team'].name))

        opt = {}
        return render(request, self.template_name,
                      dict(opt, **get_session_attributes(request)))
示例#9
0
 def get(self, request, *args, **kwargs):
     activate_language(request.session)
     opt = get_session_attributes(request)
     try:
         next = request.environ['QUERY_STRING'].split('=')[1]
         if next:
             request.session['next'] = next
     except:
         pass
     return render(request, self.template_name, opt)
示例#10
0
    def post(self, request, *args, **kwargs):
        activate_language(request.session)
        ContactMessage.objects.create(
            full_name=request.POST['name'],
            email=request.POST['email'],
            message=request.POST['message'],
        )

        request.session['alerts'] = [
            {'type': 'success', 'message': _('We will read your message as soon as possible.')}]

        return redirect('/')
示例#11
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated:
            return redirect('/')
        competition = get_object_or_404(Competition, pk=kwargs['pk'])
        if int(kwargs['day']) not in [1, 2]:
            raise Http404
        if not competition.is_creating_finished:
            raise Http404
        if 'team' in request.session:
            team = Team.objects.filter(pk=request.session['team']).first()
        else:
            team = TeamRelationToUser.objects.get(user=request.user).team
        if competition.canTeamRegister(team, request.user) == 1:
            users_without_birthdate = ''
            for rel in TeamRelationToUser.objects.filter(team=team).all():
                if rel.user.profile.birth_date is None:
                    users_without_birthdate += rel.user.get_full_name() + ', '

            if users_without_birthdate:
                request.session['alerts'] = [{
                    'type':
                    'error',
                    'message':
                    users_without_birthdate[:-2] + ' ' +
                    _('need to fill birth date in profile to register on this competition.'
                      )
                }]
                return redirect('/core/competition/{}'.format(competition.pk))

            msg = _('Day ') + kwargs['day']
            users = TeamRelationToUser.objects.filter(team=team).all()
            distances = Distance.objects.filter(competition=competition,
                                                day=kwargs['day']).all()
            return render(
                request, self.template_name, {
                    'types': Distance.TYPES,
                    'distances': distances,
                    'competition': competition,
                    'users': users,
                    'day': msg
                })

        request.session['alerts'] = [{
            'type':
            'error',
            'message':
            _('You cannot register team on this competition')
        }]

        return redirect('/')
示例#12
0
 def post(self, request):
     activate_language(request.session)
     team = Team.objects.create(name=request.POST['name'],
                                logo=request.FILES['logo'],
                                description=request.POST['description'])
     TeamRelationToUser.objects.create(team=team,
                                       user=request.user,
                                       is_coach=True)
     request.session['team'] = team.pk
     request.session['alerts'] = [{
         'type': 'success',
         'message': _('Team has been created!')
     }]
     return redirect('/core/teams/{}'.format(team.name))
示例#13
0
 def get(self, request, *args, **kwargs):
     activate_language(request.session)
     team = Team.objects.get(name=kwargs['name'])
     team_rel_users = TeamRelationToUser.objects.filter(team=team)
     is_coach = team_rel_users.filter(user=request.user).first().is_coach
     competitions_count = CompetitionTeam.objects.filter(team=team).count()
     opt = {
         'curr_team': team,
         'team_rel_users': team_rel_users,
         'is_coach': is_coach,
         'competitions': competitions_count,
     }
     return render(request, self.template_name,
                   dict(opt, **get_session_attributes(request)))
示例#14
0
 def post(self, request):
     activate_language(request.session)
     data = json.loads(request.body.decode('utf-8'))
     team = Team.objects.get(name=data['team_name'])
     inv = Invitations.objects.filter(to_user=request.user,
                                      team=team,
                                      is_active=True)
     if inv.exists():
         inv = inv.first()
     else:
         return HttpResponse(status=400)
     inv.is_active = False
     inv.save()
     return HttpResponse(status=200)
示例#15
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        user_list = User.objects.order_by('-created_at')
        paginator = Paginator(user_list, 20)
        page = request.GET.get('page', 1)

        try:
            users = paginator.page(page)
        except PageNotAnInteger:
            users = paginator.page(1)
        except EmptyPage:
            users = paginator.page(paginator.num_pages)

        opt = {'users': users}
        return render(request, self.template_name,
                      dict(opt, **get_session_attributes(request)))
示例#16
0
文件: views.py 项目: WarGen4ik/qorca
def main(request, *args, **kwargs):
    activate_language(request.session)
    competitions = Competition.getLastCompetitions()
    opt = dict()
    opt['competitions'] = competitions
    if request.user.is_authenticated:
        opt.update({
            'gender':
            _('male') if request.user.profile.gender == 1 else _('female')
        })
        request.user.profile.get_age_group()
        return render(request, 'core/index.html',
                      dict(opt, **get_session_attributes(request)))
    else:
        return render(request, 'core/index.html',
                      dict(opt, **get_session_attributes(request)))
示例#17
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if request.user.is_authenticated:
            teams_rel_user = None
            try:
                teams_rel_user = TeamRelationToUser.objects.filter(user=request.user)
            except:
                pass

            invitations = Invitations.objects.filter(to_user=request.user, is_active=True).order_by('-created_at')
            opt = {'user': request.user,
                   'teams_rel_user': teams_rel_user,
                   'invitations': invitations}
            return render(request, self.template_name, dict(opt, **get_session_attributes(request)))
        else:
            return redirect('/auth/login')
示例#18
0
 def post(self, request):
     activate_language(request.session)
     data = json.loads(request.body.decode('utf-8'))
     search = data['search'].strip()
     if ' ' in search:
         search = search.split(' ')
         query = Q()
         for x in search:
             query = query | (Q(first_name__contains=x)
                              | Q(last_name__contains=x))
         users = User.objects.filter(query).all()
     else:
         users = User.objects.filter(
             Q(first_name__contains=search)
             | Q(last_name__contains=search)).all()
     users_json = json.dumps(queryset_to_dict(users))
     return HttpResponse(users_json)
示例#19
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated:
            return redirect('/')
        competition = get_object_or_404(Competition, pk=kwargs['pk'])

        if int(kwargs['day']) not in [1, 2]:
            raise Http404
        if not competition.is_creating_finished:
            raise Http404

        if competition.canUserRegister(request.user) == 1:
            if request.user.profile.birth_date is None:
                request.session['alerts'] = [{
                    'type':
                    'error',
                    'message':
                    _('You need to fill your birth date in profile to register on competition'
                      )
                }]
                return redirect('/core/competition/{}'.format(competition.pk))
            if int(kwargs['day']) == 1:
                UserDistance.objects.filter(distance__competition=competition,
                                            user=request.user).delete()
                CompetitionUser.objects.filter(competition=competition,
                                               user=request.user).delete()
            distances = Distance.objects.filter(competition=competition,
                                                day=kwargs['day']).all()
            msg = _('Day ') + kwargs['day']
            return render(
                request, self.template_name, {
                    'types': Distance.TYPES,
                    'distances': distances,
                    'competition': competition,
                    'day': msg,
                    'rel': kwargs['rel']
                })

        request.session['alerts'] = [{
            'type':
            'error',
            'message':
            _('You cannot register on this competition')
        }]

        return redirect('/')
示例#20
0
    def post(self, request):
        activate_language(request.session)
        if request.user.is_authenticated:
            if 'city' in request.POST:
                data = dict()
                for x in request.POST:
                    data[x] = request.POST[x]
                try:
                    request.user.profile.update_data(**data)
                except ValueError:
                    opt = {'error': _('Wrong date format')}
                    return render(request, self.template_name, dict(opt, **get_session_attributes(request)))

                return redirect('/auth/profile')
            else:
                request.user.profile.avatar = request.FILES['img']
                request.user.profile.save()
                return HttpResponse()
示例#21
0
 def post(self, request, *args, **kwargs):
     activate_language(request.session)
     data = json.loads(request.body.decode('utf-8'))
     search = data['search'].strip()
     competition = get_object_or_404(Competition, pk=kwargs['pk'])
     if ' ' in search:
         search = search.split(' ')
         query = Q()
         for x in search:
             query = query | (Q(user__first_name__contains=x)
                              | Q(user__last_name__contains=x))
         users = UserDistance.objects.filter(distance__competition=competition).filter(query).\
             values('user').distinct()[:10]
     else:
         users = UserDistance.objects.filter(distance__competition=competition).filter(Q(user__first_name__contains=search) | Q(user__last_name__contains=search))\
             .values('user').distinct()[:10]
     users_json = json.dumps(querysetdistance_to_dict(users, competition))
     return HttpResponse(users_json)
示例#22
0
    def post(self, request):
        if not request.user.is_authenticated or request.user.profile.role == 1:
            raise Http404
        activate_language(request.session)
        competition = Competition.objects.create(
            name=request.POST['name'],
            description=request.POST['description'],
            logo=request.FILES['logo'],
            region=request.POST['region'],
            track_count=request.POST['track_count'],
            count_days=request.POST['count_days'],
            started_at=datetime.datetime.strptime(request.POST['started_at'],
                                                  "%Y-%m-%d").date(),
            created_by=request.user,
        )

        return redirect('/core/competition/{}/create/day/1'.format(
            competition.pk))
示例#23
0
    def post(self, request, *args, **kwargs):
        activate_language(request.session)

        day = int(kwargs['day'])
        if day not in [1, 2]:
            raise Http404
        if request.user.is_authenticated and request.user.profile.role == 2:
            competition = get_object_or_404(Competition, id=kwargs['pk'])
            if competition.created_by == request.user.id or request.user.is_admin:
                for attr in request.POST:
                    if 'result' not in attr:
                        continue
                    user_distance_id = int(attr.split('_')[-1])
                    if is_correct_time(request.POST[attr]):
                        user_distance = UserDistance.objects.filter(
                            id=user_distance_id).first()
                        user_distance.result_time = request.POST[attr]
                        user_distance.points = get_points(
                            user_distance.distance, user_distance.user,
                            request.POST[attr], day, competition)
                        print(user_distance.points)
                        user_distance.save()
                    else:
                        request.session['alerts'] = [{
                            'type': 'error',
                            'message':
                            _('%(user)s result time has wrong format. Please try again.'
                              ) %
                            {
                                'user':
                                UserDistance.objects.filter(
                                    id=user_distance_id).first().user.full_name
                            }
                        }]
                if 'alerts' not in request.session:
                    request.session['alerts'] = [{
                        'type': 'success',
                        'message': _('Success!')
                    }]

                return redirect('/competition/{}/swim/{}/day/{}'.format(
                    competition.pk, kwargs['swim'], day))
        raise Http404
示例#24
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        competition = Competition.objects.get(pk=kwargs['comp'])
        if request.user.is_authenticated and request.user.profile.role == 2:
            if competition.created_by == request.user.id or request.user.is_admin:
                badge_path = get_all_badges(competition)

                file_wrapper = FileWrapper(open(badge_path, 'rb'))
                file_mimetype = mimetypes.guess_type(badge_path)
                response = HttpResponse(file_wrapper,
                                        content_type=file_mimetype)
                response['X-Sendfile'] = badge_path
                response['Content-Length'] = os.stat(badge_path).st_size
                response[
                    'Content-Disposition'] = 'attachment; filename={}'.format(
                        'badges.zip')
                return response

        raise Http404
示例#25
0
    def get(self, request, *args, **kwargs):
        if not request.user.is_authenticated or request.user.profile.role == 1:
            raise Http404

        if int(kwargs['day']) not in [1, 2]:
            raise Http404

        competition = get_object_or_404(Competition, pk=kwargs['pk'])
        if competition.is_creating_finished:
            raise Http404
        activate_language(request.session)
        msg = _('Day ') + kwargs['day']
        return render(
            request, self.template_name, {
                'types': Distance.TYPES,
                'range': range(10),
                'day': msg,
                'is_first_day': int(kwargs['day']) == 1
            })
示例#26
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if not request.user.is_authenticated:
            return redirect('/')
        competition = get_object_or_404(Competition, pk=kwargs['pk'])
        user = get_object_or_404(User, pk=kwargs['user_id'])

        distances = Distance.objects.filter(competition=competition).all()

        ret_1 = []
        ret_2 = []
        is_day_2 = False
        for distance in distances:
            if distance.day == 2:
                is_day_2 = True
                user_distance = UserDistance.objects.filter(
                    user=user, distance=distance).first()
                temp = {'distance': distance}
                if user_distance:
                    temp['time'] = time_to_str(user_distance.pre_time)
                else:
                    temp['time'] = ''
                ret_2.append(temp)
            else:
                user_distance = UserDistance.objects.filter(
                    user=user, distance=distance).first()
                temp = {'distance': distance}
                if user_distance:
                    temp['time'] = time_to_str(user_distance.pre_time)
                else:
                    temp['time'] = ''
                ret_1.append(temp)

        return render(
            request, self.template_name, {
                'types': Distance.TYPES,
                'competition': competition,
                'ret_1': ret_1,
                'ret_2': ret_2,
                'curr_user': user,
                'is_day_2': is_day_2
            })
示例#27
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)
        if request.user.is_authenticated:
            competition = Competition.objects.get(pk=kwargs['pk'])
            if competition.canUserRegister(request.user) == -1:
                CompetitionUser.objects.filter(
                    user=request.user, competition=competition).delete()
                for distance in Distance.objects.filter(
                        competition=competition).all():
                    UserDistance.objects.filter(user=request.user,
                                                distance=distance).delete()
                delete_badge(request.user, competition)
                request.session['alerts'] = [{
                    'type':
                    'success',
                    'message':
                    _('You have been unregistrated successful!')
                }]

        return redirect('/')
示例#28
0
    def post(self, request):
        activate_language(request.session)
        user = authenticate(email=request.POST['email'], password=request.POST['psw'])

        if user is not None:
            if not user.profile.is_verificated:
                request.session['alerts'] = [{'type': 'error', 'message': _('Please verificate your email to log in.')}]
                return redirect('/auth/verification/reset')
            login(request, user)

            try:
                request.session['team'] = get_object_or_404(TeamRelationToUser, user=request.user).team.pk
            except Http404:
                pass

            if 'next' in request.session:
                del request.session['next']
                return redirect(request.session['next'])

            return redirect('/')
        return redirect('/auth/login')
示例#29
0
    def get(self, request, *args, **kwargs):
        activate_language(request.session)

        if request.user.is_authenticated and request.user.profile.role == 2:
            competition = get_object_or_404(Competition, id=kwargs['pk'])
            if competition.created_by == request.user.id or request.user.is_admin:
                path = ResultsExcel(competition).create_rating()
                if path is None:
                    return
                file_wrapper = FileWrapper(open(path, 'rb'))
                file_mimetype = mimetypes.guess_type(path)
                response = HttpResponse(file_wrapper,
                                        content_type=file_mimetype)
                response['X-Sendfile'] = path
                response['Content-Length'] = os.stat(path).st_size
                response[
                    'Content-Disposition'] = 'attachment; filename={}'.format(
                        'rating.xlsx')
                return response
            raise Http404
        return redirect('/auth/login')
示例#30
0
 def post(self, request):
     activate_language(request.session)
     data = json.loads(request.body.decode('utf-8'))
     team = Team.objects.get(name=data['team_name'])
     try:
         get_object_or_404(TeamRelationToUser, user=request.user)
         return HttpResponse(status=401)
     except Http404:
         pass
     TeamRelationToUser.objects.get_or_create(user=request.user, team=team)
     inv = Invitations.objects.filter(to_user=request.user,
                                      team=team,
                                      is_active=True)
     if inv.exists():
         inv = inv.first()
     else:
         return HttpResponse(status=400)
     inv.is_active = False
     inv.save()
     request.session['team'] = team.pk
     return HttpResponse(status=200)