コード例 #1
0
ファイル: ajax.py プロジェクト: jkprivatelyingit/ola
	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
		)
コード例 #2
0
async def subscribe(request):
    schema = SubscribeSchema()
    data, error = schema.load(request.form)  # todo 传入空的字符串不能required不能识别
    if error:
        for key, value in error.items():
            error[key] = key + ':' + ','.join(value)
        return resp_error(';'.join(error.values()))

    subscriber = Subscriber()
    subscriber.nick_name = data['nick_name']
    subscriber.email = data['email']
    subscriber.resources = data['resources']
    session.add(subscriber)
    try:
        session.commit()
        session.close()
    except Exception as e:
        session.rollback()
        session.close()
        return resp_error(e.args)
    email_ = await init_email(data['nick_name'], data['email'],
                              data['resources'])
    if not email_:
        return resp_ok('您已经成功订阅')
    else:
        return resp_error(email_)
コード例 #3
0
ファイル: ajax.py プロジェクト: jkprivatelyingit/ola
	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
		)
コード例 #4
0
 def post(self):
     # Add the user to the list
     phone_number = request.form.get('From')
     body = request.form.get('Body')
     sms_message = self._create_message(phone_number, body)
     response = make_response(sms_message)
     Subscriber.create(number=phone_number, location=body)
     response.headers['Content-Type'] = 'text/xml'
     return response
コード例 #5
0
ファイル: manage.py プロジェクト: bwghughes/badbatch
def createdb():
    print "Creating schema..."
    Subscriber.drop_table(fail_silently=True)
    Subscriber.create_table(fail_silently=True)
    Alert.drop_table(fail_silently=True)
    Alert.create_table(fail_silently=True)
    Caller.drop_table(fail_silently=True)
    Caller.create_table(fail_silently=True)
    seed_towns()
    print "Done."
コード例 #6
0
def create_or_find_subscriber(user_id, task_id):
    try:
        found_subscriber = Subscriber.get(Subscriber.userId == user_id,
                                          Subscriber.taskId == task_id)
    except Subscriber.DoesNotExist:
        Subscriber.create(userId=user_id, taskId=task_id).save()
        found_subscriber = Subscriber.get(Subscriber.userId == user_id,
                                          Subscriber.taskId == task_id)

    return found_subscriber
コード例 #7
0
ファイル: manage.py プロジェクト: 123job-Group/badbatch
def createdb():
    print "Creating schema..."
    Subscriber.drop_table(fail_silently=True)
    Subscriber.create_table(fail_silently=True)
    Alert.drop_table(fail_silently=True)
    Alert.create_table(fail_silently=True)
    Caller.drop_table(fail_silently=True)
    Caller.create_table(fail_silently=True)
    seed_towns()
    print "Done."
コード例 #8
0
ファイル: app.py プロジェクト: xeb/flowdle
    def get(self, urlparam):
        cmn = Common()
        user = users.get_current_user()

        # create or get a subscriber...
        query = db.GqlQuery("SELECT * FROM Subscriber WHERE who = :1", user)
        numUsers = query.count(1)
        if numUsers == 0:
            sub = Subscriber(who=user)
            sub.put()
        cmn.showMain(self, urlparam)
コード例 #9
0
def addSubscriber(request):
	form = SubscriberForm(request.POST)
	if form.is_valid():
		subscriber = Subscriber(email=form.clean_data['email'])
		subscriber.put()
		message = mail.EmailMessage(sender=u"DunTeam <*****@*****.**>", subject=u"Дагасанд баярлалаа")
		message.to = subscriber.email
		message.body = u"Баярлалаа\nТа бидний шинэ мэдээг дагахаар амжилттай бүртгүүллээ.\nDunTeam"
		message.send()
	else:
		return render_to_response('index.html', {'form': form })

	return HttpResponseRedirect('/')
コード例 #10
0
ファイル: main.py プロジェクト: SAEAlbert/StatusBot.net
  def post(self):
    device_id = self.request.get('device_id')
    device = Device.get_by_key_name(device_id)
    if not device:  
      self.response.out.write('<p>Device does not exist</p>')
      return

    email = self.request.get('email')
    subscriber = Subscriber(device=device, email=email)
    subscriber.trigger_state = "Ready"
    subscriber.put()

    self.response.out.write('<p>Subscribed</p>')
コード例 #11
0
def add_subscriber(*args, **kwargs):
    """
        add subscriber to datbase and job queue

        TODO: verify notify_time_str to be HH:MM.
    """
    subscriber_dict = {
        'email': kwargs.get('email'),
        'station_id': kwargs.get('station_id'),
        'endpoint': kwargs.get('endpoint'),
        'dh_param': kwargs.get('p256dh'),
        'auth': kwargs.get('auth')
    }

    notify_time_str = kwargs.get('notify_time')
    notify_time = dateutil.parser.parse(notify_time_str)
    notify_time = transform_notify_time(notify_time)

    subscriber_dict['notify_time'] = notify_time

    subscriber = Subscriber(**subscriber_dict)
    db_session.add(subscriber)

    # Commit to database, rollback if commit fails
    try:
        db_session.commit()
    except:
        db_session.rollback()
        raise InvalidSubscriberInputError()

    queue_registration_notification(subscriber)
    set_notification_job(subscriber)

    return subscriber
コード例 #12
0
def handle_job():
    print("I am a job")
    task_list = Task.select()
    global last_searched_time
    print("The last searched time is ", last_searched_time)
    for task in task_list:
        print(task.keywords)
        post_list = reddit_manager.get_posts(task.keywords,
                                             int(last_searched_time))
        print("length of post list for ", task.keywords, " is ",
              len(post_list))

        if len(post_list) > 0:
            print("We will send the email!")
            email_list = Subscriber.select().join(User).where(
                Subscriber.taskId == task.id)
            send_list = []
            for email in email_list:
                print(email.email)
                send_list.append(email.email)
                #def __init__(self, destination, subject, description):

            email_manager.send_message(send_list, "found", task)

    last_searched_time = time.time()
コード例 #13
0
def contact():
    form = SubscriberForm()
    if request.method == "POST":
        subscriber_name = request.form["subscriber_name"]
        email = request.form["email"]

        subscriber = Subscriber(subscriber_name=subscriber_name, email=email)
        db.session.add(subscriber)
        db.session.commit()

        message_subject = "10 Color Theory Basics Everyone Should Know"
        message_body = "Thank you for choosing Inspire Blog! Enjoy new ideas every day :) \n" \
                       "To start with - please follow our guide on Color Theory Basics."

        msg = Message(subject=message_subject,
                      body=message_body,
                      sender="*****@*****.**",
                      recipients=[email])

        filename = "10 Color Theory Basics Everyone Should Know.pdf"

        with app.open_resource("static/images/messages/" + filename) as fp:
            msg.attach(filename,
                       "10 Color Theory Basics Everyone Should Know/pdf",
                       fp.read())

        mail.send(msg)
        flash("Message sent")
        return redirect(url_for("index"))

    return render_template("index.html")
コード例 #14
0
ファイル: tests.py プロジェクト: achintangal/tor-weather
    def setUp(self):
        """Create a router and a Subscriber"""

        self.router = Router(name='myrouter', fingerprint='1234', exit=False)

        self.subscriber = Subscriber(email='*****@*****.**',
                                     router=self.router)
コード例 #15
0
def subscribe(request: Request,
              email: str = Form(...),
              state: int = Form(...),
              district_id: int = Form(...),
              DB: Session = Depends(get_db)):
    respDict = {}
    try:
        subscriber = Subscriber(email=email,
                                state_id=state,
                                district_id=district_id,
                                active=True)
        create_subscriber(DB, subscriber=subscriber)
        respDict = {
            'request': request,
            'isSubscriptionSuccess': True,
        }
        return RedirectResponse(url='/subscription/success',
                                status_code=HTTP_302_FOUND)
    except Exception as inst:
        status_code = 500
        respDict = {
            'request': request,
            'isSubscriptionSuccess': False,
            'error_message': inst
        }
        return templates.TemplateResponse('home.html',
                                          respDict,
                                          status_code=status_code)
コード例 #16
0
ファイル: views.py プロジェクト: priyamshah112/ether-app
def index():
    form = Form()
    if request.method == 'POST' and form.validate():
        email = request.form['email']
        # Check that email does not already exist (not a great query, but works)
        if not db.session.query(Subscriber).filter(
                Subscriber.email == email).count():
            subscriber = Subscriber(email=email, confirmed=False)
            db.session.add(subscriber)
            db.session.commit()

            token = generate_confirmation_token(subscriber.email)
            confirm_url = url_for('confirm_email', token=token, _external=True)
            html = render_template('emails/subscribers.html',
                                   confirm_url=confirm_url,
                                   token_time_limit=TOKEN_EXPIRATION_MINUTES)
            subject = "Please confirm your subscription to analyseether.com"
            send_email(subscriber.email, subject, html)

            message = Markup("Thank you for subscribing, we have sent you \
                                              a verification email.")
            flash(message)

            return redirect(url_for('index', _anchor='signUpForm'))

        else:  # The subscriber email exists in the database
            subscriber = Subscriber.query.filter_by(email=email).first_or_404()

            if subscriber.confirmed:  # the subscriber has confirmed his email
                message_email_already_verified = Markup(
                    'This email has already been verified')
                flash(message_email_already_verified)
            else:  # resent the confirmation email
                token = generate_confirmation_token(subscriber.email)
                confirm_url = url_for('confirm_email',
                                      token=token,
                                      _external=True)
                html = render_template(
                    'emails/subscribers.html',
                    confirm_url=confirm_url,
                    token_time_limit=TOKEN_EXPIRATION_MINUTES)
                subject = "Please confirm your subscription to analyseether.com"
                send_email(subscriber.email, subject, html)

                message_token_resent = Markup(
                    'Email exists, we have resent you \
                                              a verification email.')
                flash(message_token_resent)
            return redirect(url_for('index', _anchor='signUpForm'))
    elif request.method == 'POST' and not form.validate():
        for field, errors in form.errors.items():
            for error in errors:
                message_validation_error = Markup(error)
                flash(message_validation_error)
        return redirect(url_for('index', _anchor='signUpForm'))

    return render_template('index.html', form=form)
コード例 #17
0
def create_subscriber(db: Session, subscriber: Subscriber) -> DBSubscriber:
    db_subscriber = DBSubscriber(**subscriber.dict(), search_type="STDIS")
    if check_subscription(db, [db_subscriber]):
        db.add(db_subscriber)
        db.commit()
        db.refresh(db_subscriber)
        return True
    else:
        return False
コード例 #18
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)
コード例 #19
0
ファイル: views.py プロジェクト: thejessma/bar-79
def subscribe(what_for):
    email = request.form.get('email')
    print 'wtfsubscribe ' + str(email) + ' for ' + str(what_for)
    if email and validate_email(email, check_mx=True):
        subscriber = Subscriber.query.filter_by(email=email).first()
        if not subscriber:
            print '   no existing with this email'
            subscriber = Subscriber(email)
            db.session.add(subscriber)
        else:
            print '   found existing with this email! interests = ' + subscriber.interests_array
        interests = json.loads(subscriber.interests_array)
        print '    old intersts = ' + str(interests)
        if what_for not in interests:
            interests.append(what_for)
        print '    new intersts = ' + str(interests)
        subscriber.interests_array = json.dumps(interests)
        db.session.commit()
        return render_template('thanks.html');
    return render_template('invalid.html', email=email)
コード例 #20
0
    def post(self):
        email = self.request.get('email')
        name = self.request.get('name')
        subscriber = Subscriber(email=email, name=name)
        db.put(subscriber)

        response = {'result': True}
        dumped = json.dumps(response)
        self.response.headers.add_header('content-type',
                                         'application/json',
                                         charset='utf-8')
        self.response.out.write(dumped)
コード例 #21
0
ファイル: views.py プロジェクト: dvm-bitspilani/bosm-2017
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')
コード例 #22
0
def create_subscriber(body: dict) -> tuple:

    subscriber_schema = SubscriberSchema()
    subscriber_data = subscriber_schema.load(body).data

    new_subscriber = Subscriber(**subscriber_data)

    db.session.add(new_subscriber)
    db.session.commit()

    subscriber_data = subscriber_schema.dump(new_subscriber).data

    return subscriber_data, 201
コード例 #23
0
ファイル: views.py プロジェクト: chrisblythe812/gamemine
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})
コード例 #24
0
  def get(self, channelid):
    """Return general information on the channel"""
    channel = self._getentity(Channel, channelid)
    if channel is None: return

    anysubscribers = Subscriber.all().filter('channel =', channel).fetch(1)
    
    template_values = {
      'channel': channel,
      'anysubscribers': anysubscribers,
    }
    path = os.path.join(os.path.dirname(__file__), 'channel_detail.html')
    self.response.out.write(template.render(path, template_values))
コード例 #25
0
 def subscribeCallback(self, bot, update):
     chat_id = update.message.chat_id
     try:
         if self.session.query(Subscriber.id).filter_by(id=chat_id).scalar() is not None:
             for user in self.session.query(Subscriber).filter(Subscriber.id == chat_id):
                 user.subs_type = 'silent'
                 self.session.commit()
         else:
             self.session.add(Subscriber(id=chat_id, subs_type='silent'))
             self.session.commit()
         bot.send_message(chat_id=chat_id, text="Successfully subscribed on status updates")
     except:
         logging.log(logging.ERROR, f"Error during subscriber adding: {sys.exc_info()[0]}")
         raise
コード例 #26
0
ファイル: main.py プロジェクト: n0pex/StatusBot.net
    def post(self):
        device_id = self.request.get("device_id")
        device = Device.get_by_key_name(device_id)
        if not device:
            logging.info("Unknown device")
            self.redirect("/")
            return

        email = self.request.get("email")
        if not match(r"[^@]+@[^@]+\.[^@]+", email):
            self.response.out.write("Invalid email")
            return

        subscriber = device.subscriber_set.filter("email =", email).filter("trigger_state =", "ready").get()
        if subscriber:
            self.response.out.write("Subscribed")
            return

        subscriber = Subscriber(device=device, email=email)
        subscriber.trigger_state = "ready"
        subscriber.put()

        self.response.out.write("Subscribed")
コード例 #27
0
  def delete(self, channelid):
    """Handle deletion of a channel. Only allow if there are no subscribers"""
    channel = self._getentity(Channel, channelid)
    if channel is None: return

    # Check the subscribers
    nrsubscribers = Subscriber.all().filter('channel =', channel).count()
    if nrsubscribers:
      # Can't delete if subscribers still exist
      self.response.set_status(405, "CANNOT DELETE - %s SUBSCRIBERS" % nrsubscribers)
      self.response.headers['Allow'] = "GET, POST"
    else:
      channel.delete()
      self.response.set_status(204)
コード例 #28
0
ファイル: views.py プロジェクト: VMarshinskii/daoist
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()
コード例 #29
0
def receive_update():
    update = request.json
    message = update.get('message')
    text = message.get('text')
    chat_id = message.get('chat', {}).get('id')
    command, args = parse_text(text)
    commands = {
        '/start':
        lambda: [start(Subscriber.get_or_create(chat_id))],
        '/subscribe':
        lambda:
        [subscribe(Subscriber.get_or_create(chat_id), name) for name in args],
        '/unsubscribe':
        lambda: [
            unsubscribe(Subscriber.get_or_create(chat_id), name)
            for name in args
        ],
        '/my_subscriptions':
        lambda: own_subscription_list(Subscriber.get_or_create(chat_id)),
        '/subscriptions':
        lambda: all_subscription_list()
    }

    return jsonify({})
コード例 #30
0
ファイル: functions.py プロジェクト: albertpadin/bangonph
def add_subcriber(data, instance_id=""):
    if instance_id:
        subscriber = Subscriber.get_by_id(str(instance_id))
    else:
        subscriber = Subscriber()

    if data["name"]:
        subscriber.name = data["name"]
    if data["email"]:
        subscriber.email = data["email"]
    if data["fb_id"]:
        subscriber.fb_id = data["fb_id"]
    if data["distribution"]:
        subscriber.distribution = ndb.Key("Distribution", data["distribution"])

    subscriber.put()
    return subscriber
コード例 #31
0
    def post(self):
        device_id = self.request.get('device_id')
        device = Device.get_by_key_name(device_id)
        if not device:
            logging.info('Unknown device')
            self.redirect('/')
            return

        email = self.request.get('email')
        if not match(r"[^@]+@[^@]+\.[^@]+", email):
            self.response.out.write('Invalid email')
            return

        subscriber = device.subscriber_set.filter('email =', email).filter(
            'trigger_state =', "ready").get()
        if subscriber:
            self.response.out.write('Subscribed')
            return

        subscriber = Subscriber(device=device, email=email)
        subscriber.trigger_state = "ready"
        subscriber.put()

        self.response.out.write('Subscribed')
コード例 #32
0
ファイル: views.py プロジェクト: harabchuk/wisemessage
def unsubscribe(request, message_id):
    message = Message.objects(id=str(message_id)).first()

    if message and message.campaign:
        message.campaign.inc_optout()
        subscriber = Subscriber.objects(email=message.email_to).first()
        if subscriber:
            subscriber.active = False
            subscriber.deactivate_reason = 'Unsubscribed from message #{}'.format(message.id)
            subscriber.save()

    unsub = Unsubscribe.objects().first()
    if unsub and unsub.redirect_url:
        return redirect(unsub.redirect_url)

    return redirect(UNSUBSCRIBE_URL)
コード例 #33
0
def subscribe():
    if request.method == 'POST':
        app.logger.info(request)
        app.logger.info(request.form['email'])
        if request.form['email'] not in [sub.email for sub in Subscriber.query.all()]:
            if basic_valid_email_check(request.form['email']):
                new_sub = Subscriber(request.form['email'])
                app.logger.info("New subscriber %s", new_sub)
                db.session.add(new_sub)
                db.session.commit()
                flash("{} is now subscribed!".format(request.form['email']))
            else:
                flash("{} is not a valid email!".format(request.form['email']))
        else:
            flash("{} is already subscribed!".format(request.form['email']))
    return render_template('subscribe.html')
コード例 #34
0
def add_subscriber():
    form = AddSubscriber()

    if request.method == 'POST':
        if form.validate() == False:
            return render_template('apiadmin.html', form=form)

        else:
            new_subscriber = Subscriber(form.username.data, form.password.data)
            db_session.add(new_subscriber)
            db_session.commit()
            flash('New subscriber added')

            return render_template('apiadmin.html', form=form)

    elif request.method == 'GET':
        return render_template('apiadmin.html', form=form)
コード例 #35
0
  def post(self, channelid):
    """Handles a message publish to this channel"""
    channel = self._getentity(Channel, channelid)
    if channel is None: return

    contenttype = self.request.headers['Content-Type']

    # Save message
    message = Message(
      contenttype = contenttype,
      body = self.request.body,
      channel = channel,
    )
    message.put()

#   for subscriber in Subscriber.all().filter('channel =', channel):
    subscribers = Subscriber.all().filter('channel =', channel)
    if subscribers.count():
      for subscriber in subscribers:
  
        # Set up delivery of message to subscriber
        delivery = Delivery(
          message = message,
          recipient = subscriber,
        )
        delivery.put()
  
      # Kick off a task to distribute message
      taskqueue.Task(
        url='/distributor/' + str(message.key())
      ).add(QUEUE_DISTRIBUTION)

      logging.debug("Delivery queued for %d subscribers of channel %s" % (subscribers.count(), channelid))
    else:
      logging.debug("No subscribers for channel %s" % (channelid, ))

    # TODO should we return a 202 instead of a 302?
    # Actually I think it's just a 201, as we've created a new (message) resource
#   self.redirect(self.request.url + 'message/' + str(message.key()))

    # Try to detect whether we're from the coffeeshop browser, and if so, return a 302
    self.response.headers['Location'] = self.request.url + "message/%s" % str(message.key())
    if contenttype == "application/x-www-form-urlencoded" and self.request.get('messagesubmissionform') == "coffeeshop":
      self.response.set_status(302)
    else:
      self.response.set_status(201)
コード例 #36
0
def subscribe(subscribeReqModel: SubscribeReqModel,
              response: Response,
              DB: Session = Depends(get_db)):
    try:
        logger.info('Subscribe method start')
        subscriber = Subscriber(**subscribeReqModel.dict(), active=True)
        isSuccess = create_subscriber(DB, subscriber=subscriber)
        respDict = {
            'isSubscriptionSuccess': isSuccess,
        }
        response.status_code = status.HTTP_200_OK
        logger.info('Subscribe method successfully ends')
    except Exception as inst:
        respDict = {'isSubscriptionSuccess': False, 'error_message': inst}
        response.status_code = status.HTTP_500_INTERNAL_SERVER_ERROR
        logger.info('Subscribe method error:')
        logger.info(inst)
    finally:
        return respDict
コード例 #37
0
def start_subscription(email: str) -> bool:
    """Signup a subscriber.

    Args:
        email (str): email of subscriber signing up.

    Returns:
        bool: Indicates if signup was successful
    """
    try:
        subscriber = Subscriber(email=email)
        db_session.add(subscriber)

        send_confirmation_email(email)
        return True
    except Exception as e:
        logging.error(
            f"Unable to create subscription for: {email} | Error {e}")
        return False
コード例 #38
0
ファイル: views.py プロジェクト: userzimmermann/wbc
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', {})
コード例 #39
0
ファイル: app.py プロジェクト: optional-is/posthorn
def subscribe():
    error = None
    results = None
    if request.method == 'POST':
        try:
            name = request.form.get('name', None)
            email = request.form.get('email', None)

            if email:
                person = Subscriber(email=email, name=name)
                db.session.add(person)
                db.session.commit()
                results = '{} has been sent a confirmation email.'.format(
                    person.email)
            else:
                error = "Email is required."
        except Exception as e:
            print(e)
            error = "Error creating subscriber."

    return render_template("subscribe.html", error=error, results=results)
コード例 #40
0
 def add(self, new_item: Dict) -> Dict:
     subscription = subscriptions_wrapper.get_by_id(
         new_item['subscription_id'])
     subscriber = Subscriber(
         first_name=new_item['first_name'].title(),
         last_name=new_item['last_name'].title(),
         email=new_item.get('email'),
         phone=new_item.get('phone'),
         subscription_id=new_item['subscription_id'],
         paid=new_item.get('paid'),
         exp_date=int(
             (self._now +
              relativedelta(months=+subscription['months'])).timestamp()))
     db.session.add(subscriber)
     try:
         db.session.commit()
     except sqlalchemy.exc.IntegrityError as _:
         db.session.rollback()
         print('subscriber exists! no need to add new one')
     except Exception as exc:
         print(f'Something went wrong: {exc}')
コード例 #41
0
  def get(self, channelid):
    """Handles a GET to the /channel/{id}/subscriber/ resource
    """
    channel = Channel.get_by_id(int(channelid))
    if channel is None:
      self.response.out.write("Channel %s not found" % (channelid, ))
      self.response.set_status(404)
      return

    subscribers = []
    for subscriber in Subscriber.all().filter('channel =', channel):
      subscribers.append({
        'subscriberid': subscriber.key().id(),
        'name': subscriber.name,
        'resource': subscriber.resource,
        'created': subscriber.created,
      })

    template_values = {
      'channel': channel,
      'subscribers': subscribers,
    }
    path = os.path.join(os.path.dirname(__file__), 'channelsubscriber.html')
    self.response.out.write(template.render(path, template_values))
コード例 #42
0
ファイル: routes.py プロジェクト: drshrey/freshmeat
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)
コード例 #43
0
ファイル: coffeeshop.py プロジェクト: qmacro/coffeeshop
  def post(self, channelid):
    """Handles a POST to the /channel/{id}/subscriber/ resource
    which is to add a subscriber to the channel
    """
#   Get channel first
    channel = Channel.get_by_id(int(channelid))
    if channel is None:
      self.response.out.write("Channel %s not found" % (channelid, ))
      self.response.set_status(404)
      return

#   Add subscriber
    name = self.request.get('name').rstrip('\n')
    resource = self.request.get('resource').rstrip('\n')
    subscriber = Subscriber()
    subscriber.channel = channel
    subscriber.name = name
    subscriber.resource = resource
    subscriber.put()
#   Not sure I like this ... re-put()ing
    if len(subscriber.name) == 0:
      subscriber.name = 'subscriber-' + str(subscriber.key().id())
      subscriber.put()

#   If we've got here from a web form, redirect the user to the 
#   channel subscriber resource, otherwise return the 201
    if self.request.get('subscribersubmissionform'):
      self.redirect(self.request.path_info)
    else:
      self.response.headers['Location'] = self.request.url + str(subscriber.key().id()) + '/'
      self.response.set_status(201)
コード例 #44
0
ファイル: cutils.py プロジェクト: qmacro/coffeeshop
def delete_all_subscribers():
    while Subscriber.all().fetch(CHUNK):
        db.delete(Subscriber.all().fetch(CHUNK))
コード例 #45
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