예제 #1
0
def participants_new(request):

    return render(request,
                  'sponsor/dashboard/participants/new.html.j2',
                  context={
                      'title': 'Participants',
                      'sponsor': get_sponsor(request.session['email']),
                  })
예제 #2
0
    def get_context_data(self, **kwargs):
        poc_form = POCForm()

        context = super().get_context_data(**kwargs)
        context['title'] = 'POCs'
        context['sponsor'] = get_sponsor(self.request.session['email'])
        context['poc_form'] = poc_form
        return context
예제 #3
0
def contact(request):
    if request.method == "POST":
        print(request)
        c_dict = parser.parse(request.POST.urlencode())
        print(c_dict)
    return render(request,
                  'sponsor/dashboard/account/contact.html.j2',
                  context={
                      'title': 'POC',
                      'sponsor': get_sponsor(request.session['email']),
                  })
예제 #4
0
def payments_add(request, type, package_id):
    '''
		add a new payment once a package has been selected

	'''
    if type == "healthcheck":
        try:
            dis_type = HealthCheckup.objects.get(uid=package_id)
        except:
            raise Http404("Invalid UID")
    elif type == "discountcard":
        try:
            dis_type = DiscountCard.objects.get(uid=package_id)
        except:
            raise Http404("Invalid UID")
    else:
        raise Http404("Invalid Type")

    if request.method == "POST":
        if 'coupon' in request.session:
            print("C : ", request.session['coupon'])
        p_data = parser.parse(request.POST.urlencode())
        request.session['users'] = p_data['can_id']
        request.session['pack_type'] = type
        request.session['pack_id'] = dis_type.id
        return redirect('common:payment_init')

    sponsor = get_sponsor(request.session['email'])
    candidates = [_.user for _ in sponsor.users.all()]
    fields = (
        'pk',
        'email',
        'name',
        'mobile',
        'gender',
    )
    candidates = serializers.serialize("python", candidates, fields=fields)

    return render(request,
                  'sponsor/dashboard/payments/add.html.j2',
                  context={
                      'title': 'Payments',
                      'sponsor': sponsor,
                      'candidates': candidates,
                      'card': dis_type,
                      'fields': fields
                  })
예제 #5
0
def account_basic(request):
    ''' edit basic organizational and POC details '''

    s = Sponsor.objects.filter(user__email=request.session['email']).first()

    class OrgForm(forms.ModelForm):
        class Meta:
            model = Organization
            fields = (
                'name',
                'type',
                'size',
                'image',
            )

    class POCForm(forms.ModelForm):
        class Meta:
            model = User
            fields = (
                'mobile',
                'email',
                'gender',
            )

    if request.method == "POST":
        org_form = OrgForm(request.POST,
                           request.FILES,
                           instance=s.organization)
        poc_form = POCForm(request.POST, request.FILES, instance=s.user)
        if org_form.is_valid(): org_form.save()
        if poc_form.is_valid():
            poc_form.save()
            request.session['email'] = s.user.email
    else:
        org_form = OrgForm(instance=s.organization)
        poc_form = POCForm(instance=s.user)

    return render(request,
                  'sponsor/dashboard/account/basic.html.j2',
                  context={
                      'title': 'Account - Basic Details',
                      'sponsor': get_sponsor(request.session['email']),
                      'org_form': org_form,
                      'poc_form': poc_form,
                  })
예제 #6
0
def payments_new(request):
    '''
		route to display catalog of new discount cards and payments

	'''

    if 'coupon' in request.session: del request.session['coupon']
    discounts = DiscountCard.objects.all()
    checkups = HealthCheckup.objects.all()

    return render(request,
                  'sponsor/dashboard/payments/new.html.j2',
                  context={
                      'title': 'Payments',
                      'sponsor': get_sponsor(request.session['email']),
                      'discounts': discounts,
                      'checkups': checkups,
                  })
예제 #7
0
def dashboard(request):
    ''' route for dashboard home '''

    u = Sponsor.objects.filter(user__email=request.session['email']).first()

    class SponsorForm(forms.ModelForm):
        class Meta:
            model = Sponsor
            exclude = (
                'user',
                'users',
            )

    user_form = UserForm(instance=u.user)
    sponsor_form = SponsorForm(instance=u)
    errors = None

    if request.method == "POST":
        s = SponsorForm(request.POST, request.FILES, instance=u)
        u = UserForm(request.POST, request.FILES, instance=u.user)
        if s.is_valid() and u.is_valid():
            user = u.save(commit=False)
            ip_addr, del_val = getIP(request)
            print("IP ADDR : ", ip_addr)
            if ip_addr: user.last_IP = ip_addr
            user.save()
            sponsor = s.save(commit=False)
            sponsor.user = user
            sponsor.save()
        user_form = u
        sponsor_form = s
        errors = [u.errors, s.errors]
        print(errors)

    return render(request,
                  'sponsor/dashboard/index.html.j2',
                  context={
                      "title": "Dashboard Home",
                      'user_form': user_form,
                      'sponsor_form': sponsor_form,
                      'errors': errors,
                      'sponsor': get_sponsor(request.session['email']),
                  })
예제 #8
0
 def get_queryset(self):
     sp = get_sponsor(self.request.session['email'])
     return User.objects.filter(seeker__in=sp.users.all())
예제 #9
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['title'] = 'Participants - View'
     context['sponsor'] = get_sponsor(self.request.session['email'])
     return context
예제 #10
0
 def get_queryset(self):
     sp = get_sponsor(self.request.session['email'])
     return Transaction.objects.filter(receiver=sp.user)
예제 #11
0
 def get_queryset(self):
     sp = get_sponsor(self.request.session['email'])
     return sp.pocs.all()
예제 #12
0
def user_view(request):
    '''
		route for adding and viewing users
		- Single user (new) addition (Seeker form)
		- Multiple (existing user additon) (Sponsor form only single field)
		- Excel based multiple (new) user addition (manually)
		- Viewing added users and modifying (formset factory)

	'''
    class SeekerForm(forms.ModelForm):
        class Meta:
            model = Seeker
            exclude = (
                'user',
                'family',
            )

    class SponsorForm(forms.ModelForm):
        class Meta:
            model = Sponsor
            fields = ('users', )

        def __init__(self, *args, **kwargs):
            super(SponsorForm, self).__init__(*args, **kwargs)
            self.fields['users'].widget = forms.CheckboxSelectMultiple()
            self.fields['users'].queryset = Seeker.objects.all()

    class SeekerMultipleForm(forms.Form):
        file = forms.FileField()

        def is_valid(self):
            init_validity = super(SeekerMultipleForm, self).is_valid()
            if not init_validity: return init_validity
            f = self.cleaned_data['file']
            if f.name.rsplit('.')[-1] not in ['xlsx', 'xls']:
                print("hello error")
                self.add_error('file', "Invalid file")
                return False
            return True

    u = Sponsor.objects.filter(user__email=request.session['email']).first()
    errors = None

    class UserForm(forms.ModelForm):
        class Meta:
            model = User
            fields = (
                'email',
                'name',
                'mobile',
            )

    basic_user = UserForm()
    seeker_specific = SeekerForm()
    existing_multiple = SponsorForm(instance=u)
    bulk_form = SeekerMultipleForm()

    if request.method == "POST":
        # handle all the forms here
        # with error detection and particular routing
        errors = []

        if request.POST['type'] == "single_user":
            b = UserForm(request.POST, request.FILES)
            # s = SeekerForm(request.POST, request.FILES)
            # if b.is_valid() and s.is_valid():
            if b.is_valid():
                user = b.save(commit=False)
                ip_addr, del_val = getIP(request)
                user.role = 'healthseeker'
                user.password = make_password(user.mobile)
                user.question = Question.objects.first()
                user.answer = "default"
                user.save()
                # seeker = s.save(commit=False)
                seeker = Seeker(user=user, dob=datetime.datetime.now().date())
                seeker.user = user
                seeker.save()
                u.users.add(seeker)
            else:
                basic_user = b
                # seeker_specific = s
                errors += [b.errors]

        elif request.POST['type'] == "existing_multiple":
            # code for adding the multiple existing users
            # to the sponsor users_store
            s = SponsorForm(request.POST, request.FILES, instance=u)
            if s.is_valid():
                s.save()
            else:
                errors += [s.errors]
            existing_multiple = s

        elif request.POST['type'] == "new_multiple":
            # code to handle the multiple additon
            # from an excel sheet or something
            # MANUAL PARSING
            m = SeekerMultipleForm(request.POST, request.FILES)
            if m.is_valid():
                user_list, missed = addUsers(request, request.FILES['file'])
            else:
                errors += [m.errors]
                # print(errors)
            bulk_form = m

    # print("errors : ", errors)
    return render(
        request,
        'sponsor/dashboard/participants/new.html.j2',
        context={
            'title': "Participants",
            'sponsor': get_sponsor(request.session['email']),
            'errors': errors,
            'basic_user': basic_user,
            # 'seeker_specific': seeker_specific,
            # 'existing_multiple' : existing_multiple,
            'bulk_form': bulk_form
        })