Esempio n. 1
0
	def create_user(self, form_values):
		logged_in_employee = Subscriber.objects.get(user=self.user)
		if not UserGroupManager.is_company_admin(self.user):
			return self.respond(is_saved=False, auth_errors='Permission Denied')

		user_form = UserCreationForm(form_values)
		subscriber_form = SubscriberCreationForm(form_values)
		subscriber_form.is_company_admin = UserGroupManager.is_company_admin(self.user)
		subscriber_form.logged_in_employee = logged_in_employee
		if user_form.is_valid() and subscriber_form.is_valid():
			user = user_form.save(commit=False)
			user.email = subscriber_form.cleaned_data['email']
			user.first_name = subscriber_form.cleaned_data['first_name']
			user.last_name = subscriber_form.cleaned_data['last_name']
			user.is_active = True
			user.is_staff = False
			user.save()
			user_groups = [Group.objects.get(pk=subscriber_form.cleaned_data['role'])]
			user.groups.add(*user_groups)
			subscriber = Subscriber(
				user=user,
				client=logged_in_employee.client
			)
			subscriber.save()
			return self.respond(is_saved=True, subscriber=subscriber.serialize())
		return self.respond(
			is_saved=False, 
			user_form_errors=user_form.errors,
			subscriber_form_errors=subscriber_form.errors
		)
Esempio n. 2
0
	def do_registration(self, form_values):
		client_form = ClientForm(form_values)
		user_form = UserCreationForm(form_values)
		subscriber_form = SubscriberCreationForm(form_values)
		if client_form.is_valid() and user_form.is_valid() and subscriber_form.is_valid():
			client = client_form.save(commit=False)
			client.payment_status = 0 # no payment, not so far.
			client.save()
			user = user_form.save(commit=False)
			user.email = subscriber_form.cleaned_data['email']
			user.first_name = subscriber_form.cleaned_data['first_name']
			user.last_name = subscriber_form.cleaned_data['last_name']
			user.is_active = True
			user.is_staff = False
			user.save()
			user_groups = [Group.objects.get(name__exact=GROUP_NAME_MAP['COMPANY_ADMIN'])]
			user.groups.add(*user_groups)
			subscriber = Subscriber(
				user=user,
				client=client
			)
			subscriber.save()
			return self.respond(is_saved=True)
		return self.respond(
			is_saved=False, 
			client_form_errors=client_form.errors,
			user_form_errors=user_form.errors,
			subscriber_form_errors=subscriber_form.errors
		)
Esempio n. 3
0
def index(request):

    if request.method == 'POST':

        email = request.POST['email']
        name = request.POST['name']
        mobile_number = request.POST["mobile_number"]

        try:
            Subscriber.objects.get(email_address=email)
            user_exists = True
        except:
            user_exists = False

        if user_exists:

            data = {'status': 0}
            return JsonResponse(data)

        if len(mobile_number) == 10:
            try:

                number = int(mobile_number)

                if re.match(
                        r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)",
                        email):

                    subscriber = Subscriber()
                    subscriber.email_address = email
                    subscriber.name = name
                    subscriber.mobile_number = '+91' + mobile_number
                    subscriber.save()
                    data = {
                        'status': 1,
                        'email': email,
                        'name': name,
                        'mobile_number': mobile_number
                    }
                    return JsonResponse(data)

                else:

                    data = {'status': 3}
                    return JsonResponse(data)

            except ValueError:
                data = {'status': 2}
                return JsonResponse(data)

        else:
            data = {'status': 2}
            return JsonResponse(data)

    return render(request, 'Subscribe/index.html')
Esempio n. 4
0
def validate(request, code):
    try:
        validation = Validation.objects.get(code=code)

        if validation.action == 'subscribe':
            try:
                subscriber = Subscriber.objects.get(email=validation.email)
                subscriber.entities.clear()
            except Subscriber.DoesNotExist:
                subscriber = Subscriber(email=validation.email)
                subscriber.save()

            entities = loads(validation.entities)
            for key in entities:
                if entities[key]:
                    subscriber.entities.add(District.objects.get(pk=key))
            subscriber.save()

            validation.delete()

        elif validation.action == 'unsubscribe':
            try:
                subscriber = Subscriber.objects.get(email=validation.email)
                subscriber.delete()
            except Subscriber.DoesNotExist:
                pass  # don't tell the user

            validation.delete()

        else:
            raise Exception(
                "Unknown action '%s' for validation" % validation.action)

        unsubscribe_path = reverse(
            'wbc.news.views.unsubscribe', args=['.']).strip('.')

        return render(request, 'news/validate.html', {
            'success': True,
            'action': validation.action,
            'unsubscribe_link': settings.SITE_URL + unsubscribe_path
        })

    except Validation.DoesNotExist:
        return render(request, 'news/validate.html', {})
Esempio n. 5
0
def subscribe():
    try:
        email = request.json['email']
        try:
            if Subscriber.objects.get(email=email):
                return make_response(
                    jsonify({"email": email + ' is already subscribed'}), 400)
        except Subscriber.DoesNotExist:
            pass

        subscribe = Subscriber(email=email)
        subscribe.save()

        return make_response(
            jsonify(
                {"success": "Thank you for subscribing to COVID-19 alerts"}),
            201)

    except KeyError:
        abort(400)
Esempio n. 6
0
def subscribe(request):
    class SubscriptionForm(forms.Form):
        email = forms.EmailField()
    form = SubscriptionForm(request.GET)
    if form.is_valid():
        subscriber = Subscriber()
        subscriber.email = form.cleaned_data['email']
        subscriber.campaign_cid = request.campaign_id
        subscriber.save()
        
        ctx = {
            'email': subscriber.email,
            'guid': subscriber.guid,
            'confirmation_url': 'http://%s%s' % (
                Site.objects.get_current().domain,
                reverse('subscription:confirm', kwargs={'guid': subscriber.guid}),
            ), 
        }
        mail(subscriber.email, 'subscription/confirmation_email.html', ctx, subject='GameMine. E-mail confirmation')

        return JsonResponse({'success': True})
    return JsonResponse({'success': False})
Esempio n. 7
0
def add_subscriber_view(request):
    if request.GET:
        response = {'errors': 0}

        name = request.GET.get('name', '')
        if name == '':
            response['errors'] = 1
            response['name_error'] = "Введите имя"

        email = request.GET.get('email', '')
        if email == '':
            response['errors'] = 1
            response['email_error'] = "Введите e-mail"
        else:
            try:
                Subscriber.objects.get(email=email)
                response['errors'] = 1
                response['email_error'] = "Такой e-mail уже подписан"
            except Subscriber.DoesNotExist:
                pass

        if response['errors'] == 0:
            subscriber = Subscriber(name=name, email=email)
            subscriber.save()

            api = PyUniSend('5wy7awr4cunj36qds3e565bi4xi5wmzy57kzw9wo')
            # 5715758, 5715742
            result = api.subscribe(list_ids='5715758', fields={
                'email': subscriber.email,
                'Name': subscriber.name.encode("UTF-8")
            }, double_optin=1)

            print result

        return HttpResponse(json.dumps(response))

    raise Http404()
Esempio n. 8
0
  def create(self, request):
    term = ''
    guid = None
    email = ''
    leaseid = ''
    try:
        if request.POST.get('term') and request.POST['term']:
           term = request.POST['term'] 
        if request.POST.get('email') and request.POST['email']:
           email = request.POST['email']
        if request.POST.get('guid') and request.POST['guid']:
           guid = request.POST['guid']
        if request.POST.get('leaseid') and request.POST['leaseid']:
           leaseid = request.POST['leaseid']
        if term==None or email==None or int(term) < 0 or int(term) > 365:
            return HttpResponse(json.dumps({'status':'error', 
                   'msg':'Term and email required.Term has to be less than 365 days'}), status=400)
        if guid == None:
              resource = Resource()
              #guid = uuid.uuid4
              #resource.guid = guid
              resource.callbackurl = ''
              resource.callbackauth = ''
              resource.save()
              print('resource saved')
              guid = resource.guid
        try:
              print('all_resources='+repr(Resource.objects.all()))
              resource = Resource.objects.get(guid=guid)
        except Resource.DoesNotExist:
              resource = None
              return HttpResponse(json.dumps({
               'status': 'error',
               'msg': 'Resource could not be created',
               'lease':'',
               }), status=500)
        try:
            subscriber = Subscriber.objects.get(email=email)
        except Subscriber.DoesNotExist:
            subscriber = None
            pass
        if subscriber == None:
           subscriber = Subscriber()
           subscriber.email = email
           subscriber.save()
        subscriber = Subscriber.objects.get(email=email)

        if not leaseid:
            lease = ResourceLease()
            print('lease.resource='+repr(resource))
            lease.resource = resource
            lease.subscriber = subscriber
            lease.term = int(term)
            from datetime import timedelta
            lease.expires = datetime.datetime.now() + timedelta(days=int(term))
            lease.status = 'A'
            lease.save()
            print('lease.id'+str(lease.id))
            leaseid = str(lease.id)
        try:
            lease = ResourceLease.objects.get(id=leaseid)
        except ResourceLease.DoesNotExist:
            lease = None
            return HttpResponse(json.dumps({
               'status': 'error',
               'msg': 'Resource could not be created',
               'lease':'',
               }), status=500)
        queryset = ResourceSubscribers.objects.filter(resource=resource)
        recipients = []
        for item in queryset:
            recipients.append(item.subscriber.email)
        if email not in recipients:
            recipients.append(email)
            ressub = ResourceSubscribers()
            ressub.resource = resource
            ressub.subscriber = subscriber
            ressub.save()
        return HttpResponse(json.dumps({'status':'success', 'guid':str(guid), 'leaseid':str(leaseid), 'subscribers':recipients}))
    except:
        import sys
        exc_type, exc_value, exc_traceback = sys.exc_info()
        import traceback
        msg = repr(traceback.format_exception(exc_type, exc_value, exc_traceback))
        logger.warn(msg)
        return HttpResponse(json.dumps({
               'status': 'error',
               'msg': msg,
               'lease':'',
               }), status=500)
    finally:
        pass
Esempio n. 9
0
def subscribeUser():
    results = {
       'borough': "",
       'number': '',
       'animal': None,
       'prey' : None
    }
    BODY_PART_DICT = {
        'la': "Left Arm",
        'ra': "Right Arm",
        'll': "Left Leg",
        "rl": "Right Leg",
        "t": "Tail"
    }
    
    def getFullSubscriber(sub):
        return {
                "number": sub.subscriber.number,
                "animal": {
                    "name": sub.animal.name
                    },
                "body_part": {
                    "name": sub.body_part.name
                    },
                "division":{
                    "name": sub.division.name
                    }   
            }
    '''
    def get_neighborhood_wl(sub):
        #Get div
        div = SubscriberDivision.select().where(SubscriberDivision.subscriber == sub).get().division
        full_wl = FullSubscriber.select().where(FullSubscriber.division==div)
        return full_wl
    '''

    def getPredPrey(x):
        fm = { 
            "animal": x.animal.name,
            "division": x.division.name,
            "location": x.location.address,
            "body_part":x.body_part.name
        }
        print fm
        return fm


    if request.method == "POST":
        try:
            # Check if number exists
            check = None
            try:
                check = Subscriber.get(Subscriber.number == request.form['number'])
            except:
                pass
            if check:
                return render_template('error.html', error="Number already picked. Try another one.")
            sub = Subscriber(number=request.form['number'])
            sub.save()
            an = Animal.get(Animal.name==request.form['animal'])
            
            sa = SubscriberAnimal(subscriber=sub, animal=an)
            sa.save()

            bodypart = BodyPart.get(BodyPart.name==request.form['body_part'])
            sb = SubscriberBodyPart(subscriber=sub, body_part=bodypart)
            sb.save()
            div= Division.get(Division.name==request.form['borough'])
            sd = SubscriberDivision(subscriber=sub, division=div)
            sd.save()
            fs = FullSubscriber(subscriber=sub, animal=an, body_part=bodypart, division=div)
            fs.save()
        except peewee.IntegrityError:
            return render_template("error.html", error="Duplicate Phone Number. Pick Another One.")
        prey = [x.preyAnimal for x in PredPrey.select(PredPrey, Animal).join(Animal).where(PredPrey.predAnimal == fs.animal)]

        preyMurders = []
        for p in prey:
            q = FullMurder.select(FullMurder, Animal, Division, Location, BodyPart).join(Animal).switch(FullMurder).join(Division).switch(FullMurder).join(Location).switch(FullMurder).join(BodyPart).where(FullMurder.animal == p and FullMurder.division == fs.division)
            preyMurders.extend([x for x in q])
        watchlist = FullSubscriber.select(FullSubscriber, Subscriber, Animal, BodyPart, Division).join(Subscriber).switch(FullSubscriber).join(Animal).switch(FullSubscriber).join(BodyPart).switch(FullSubscriber).join(Division).where(FullSubscriber.division == fs.division and FullSubscriber.subscriber != fs.subscriber)
        results['prey'] = [getPredPrey(pm) for pm in preyMurders]
        results['watchlist'] = [getFullSubscriber(sub) for sub in watchlist]
        results['subFull'] = getFullSubscriber(fs)
        results['borough'] = fs.division.name
        results['number'] = fs.subscriber.number
    if request.method == 'GET':
        sub = None
        print request.args.get('number')
        phonenumber = request.args.get('number')
        try:
            sub = Subscriber.get(Subscriber.number== phonenumber)
        except:
            return render_template('error.html', error='Number does not exist. Subscribe by going to subscribe page and registering!')
        fs = FullSubscriber.get(FullSubscriber.subscriber == sub)
        prey = [x.preyAnimal for x in PredPrey.select(PredPrey, Animal).join(Animal).where(PredPrey.predAnimal == fs.animal)]

        preyMurders = []
        for p in prey:
            q = FullMurder.select(FullMurder, Animal, Division, Location, BodyPart).join(Animal).switch(FullMurder).join(Division).switch(FullMurder).join(Location).switch(FullMurder).join(BodyPart).where(FullMurder.animal == p and FullMurder.division == fs.division)
            preyMurders.extend([x for x in q])
        watchlist = FullSubscriber.select(FullSubscriber, Subscriber, Animal, BodyPart, Division).join(Subscriber).switch(FullSubscriber).join(Animal).switch(FullSubscriber).join(BodyPart).switch(FullSubscriber).join(Division).where(FullSubscriber.subscriber != fs.subscriber, FullSubscriber.division == fs.division)
        results['prey'] = [getPredPrey(pm) for pm in preyMurders]
        results['watchlist'] = [getFullSubscriber(sub) for sub in watchlist]
        results['subFull'] = getFullSubscriber(fs)
        results['borough'] = fs.division.name
        results['number'] = fs.subscriber.number
    return render_template("subscriber_results.html", results=results)