Example #1
0
def toggle_subscriptions():
    req_data = request.get_json()
    subreddit_name = req_data['subreddit']

    subreddit = Subreddit.query.filter(Subreddit.name == subreddit_name).first()
    subscription = Subscription.query.get((current_user.id, subreddit.id))

    new_type = 'ADD'
    try:
        if request.method == 'DELETE':
            db.session.delete(subscription)
            new_type = 'REMOVE'
        else:
            if subscription:
                raise IntegrityError('Entry already exists',
                                     subscription, 'user_routes')
            new_sub = Subscription(
                user_id=current_user.id,
                subreddit_id=subreddit.id
            )
            db.session.add(new_sub)
        db.session.commit()
    except IntegrityError:
        return {"errors": "There was a problem processing your request."}

    return {"subscription": subreddit_name, "type": new_type}
Example #2
0
def register():
    """
    {
        "email": "*****@*****.**",
        "lat": 51.1234,
        "lon": 21.0101,
        "hours": [12, 14, 20]
    }
    """
    json_data = request.get_json()
    if not json_data:
        return bad_request('No input data provided')
    try:
        data = new_sub_schema.load(json_data)
    except ValidationError as e:
        return jsonify(e.messages), 422
    else:
        current_app.logger.info('Subscription data: %s' % data)

        # sprawdzić czy email już istnieje
        old_sub = Subscription.query.filter_by(email=data.get('email')).first()
        if old_sub is not None:
            current_app.logger.info("Email taken")
            return error_response(
                422, "Email '%s' already registered!" % data.get('email'))

        hours = data.pop('hours')
        sub = Subscription(**data)
        sub.update_hours(hours)

        db.session.add(sub)
        db.session.commit()
        current_app.logger.info("Subscription saved")
        return jsonify({'message': 'Subscription saved!'}), 200
Example #3
0
def subscribe():
    if request.is_json:
        json = request.get_json(force=True)
        if (json is None or json.get("subscription", None) is None
                or json.get("subscription").get("endpoint", None) is None
                or json.get("subscription").get("keys", None) is None or
                json.get("subscription").get("keys").get("auth", None) is None
                or json.get("subscription").get("keys").get("p256dh",
                                                            None) is None):
            return make_response("Body not of subscription format", 400)
        existing_sub = Subscription.query.filter_by(sub_json=str(json)).first()
        if existing_sub:
            log.info("Subscription already stored, renewing!")
            existing_sub.sub_json = str(json)
            existing_sub.expires = int(time.time()) + 24 * 3600
        else:
            sub = Subscription(sub_json=str(json))
            log.info("Added new subscription: %s", sub.sub_json)
            db.session.add(sub)
        db.session.commit()

    else:
        return make_response("Body not JSON", 400)

    return make_response("OK", 200)
Example #4
0
    def setUp(self):
        '''
            Set up method that will run before every Test
            '''

        self.new_subscriber = Subscription(1234, 'Python Must Be Crazy',
                                           'A thrilling new Python Series')
Example #5
0
def seed_subscriptions(user_list, subreddit_list):
    subscription_list = [
        Subscription(
            user_id=user_list[0].id,
            subreddit_id=subreddit_list[0].id,
        ),
        Subscription(
            user_id=user_list[0].id,
            subreddit_id=subreddit_list[3].id,
        ),
        Subscription(
            user_id=user_list[0].id,
            subreddit_id=subreddit_list[6].id,
        ),
        Subscription(
            user_id=user_list[0].id,
            subreddit_id=subreddit_list[2].id,
        ),
        Subscription(
            user_id=user_list[0].id,
            subreddit_id=subreddit_list[5].id,
        ),
        Subscription(
            user_id=user_list[1].id,
            subreddit_id=subreddit_list[3].id,
        ),
        Subscription(
            user_id=user_list[1].id,
            subreddit_id=subreddit_list[6].id,
        ),
        Subscription(
            user_id=user_list[2].id,
            subreddit_id=subreddit_list[5].id,
        ),
        Subscription(
            user_id=user_list[3].id,
            subreddit_id=subreddit_list[6].id,
        ),
        Subscription(
            user_id=user_list[5].id,
            subreddit_id=subreddit_list[6].id,
        ),
    ]

    db.session.add_all(subscription_list)
    db.session.commit()
    return subscription_list
Example #6
0
    def _make_sub(email, lat, lon, hours):
        sub = Subscription(email=email, lat=lat, lon=lon)
        sub.hours = [SubscriptionHour(hour=h) for h in hours]

        database.session.add(sub)
        database.session.commit()

        return sub
Example #7
0
def subscribe(id):
    user = User.query.get_or_404(id)

    subscription = Subscription(user_id=user.id, subscriber_id=current_user.id)
    db.session.add(subscription)
    db.session.commit()

    return json.dumps({'success': True})
Example #8
0
async def add_entry(request):
    data = await request.json()
    data['data']['offset'] = datetime.today() - timedelta(hours=24)
    sub = Subscription(data['data'])
    try:
        sub.m.save()
        return web.json_response(status=200, data={'ok': True})
    except:
        return web.json_response(status=500, data={'ok': False})
Example #9
0
def create_subscription(issue_autocard=True, pull_request_autocard=True):
    """Create a subscription."""
    db.session.add(
        Subscription(
            board_id=default_board_id,
            repo_id=default_repo_id,
            issue_autocard=issue_autocard,
            pull_request_autocard=pull_request_autocard
        )
    )
Example #10
0
def subscribe(id):
    collection = Collection.query.get(id)
    if collection is None:
        return abort(404)

    db.session.add(Subscription(user=current_user, collection=collection))
    db.session.commit()

    next = request.args.get("next")
    return (abort(400) if not is_safe_url(next) else redirect(
        next or url_for("auth.subscription", id=id)))
Example #11
0
def subscriptions_add():
    if current_user.subscr_left > 0:
        newsubscr = Subscription(user_id = current_user.id)
        user = User.query.filter(User.id==current_user.id).first()
        user.subscr_left = current_user.subscr_left - 1
        db.session.add(user)
        db.session.add(newsubscr)
        db.session.commit()
        flash("Subscription {sub} added, you have {numsubscr} subscriptions left".format(sub=newsubscr.id, numsubscr=user.subscr_left), 'success')
    else:
        flash("You have no subscriptions left, upgrade your plan to get more", 'warning')
    return redirect(url_for('subscriptions.subscriptions'))
Example #12
0
def add_position(update: Update, context: CallbackContext):
    callback_query: CallbackQuery = update.callback_query
    _, suffix = callback_query.data.strip().split('.')
    position = Position.query.filter_by(id=suffix).first()
    city_id: str = context.user_data['city_id']
    city = City.query.get(city_id)
    message: Message = callback_query.message

    subscription = Subscription(
        chat_id=message.chat_id,
        city_id=city_id,
        position_id=position.id,
    )
    subscription.soft_add()
    db.session.commit()

    callback_query.answer(
        callback_query=callback_query.id,
        text=f"Дякую, я запам'ятав твій вибір",
        cache_time=60,
    )

    message.reply_text(
        text=
        (f"Опитування завершено 🎉 \n"
         f"Тепер я буду тебе сповіщувати про "
         f"нові вакансії у категорії *{position.name}* у місті *{city.name}*."
         f"\n\n"
         f"За мить, ти отримаєш перелік вакансій за обраними параметрами 😉"),
        parse_mode='Markdown',
        reply_markup=get_keyboard_menu(update),
    )
    stat = Stat(chat_id=message.chat_id, action=Action.subscribed.value)
    db.session.add(stat)
    db.session.commit()

    vacancies = parser.update_new_vacancies(city, position)
    if not vacancies:
        message.reply_text(
            text=
            f"🤷‍♀️ На жаль, у місті *{city.name}* немає вакансій в категорії *{position.name}*",
            parse_mode='Markdown',
        )
    # send only 10 vacancies for preventing spamming
    vacancies = vacancies[:10]
    sender.send_vacancies(vacancies, message.chat_id)

    return ConversationHandler.END
Example #13
0
def index():
    """
    View root page function that returns the index page and its data
    """

    title = 'Home'
    page = request.args.get('page', 1, type=int)
    posts = Post.query.order_by(Post.date_posted.desc()).paginate(page=page,
                                                                  per_page=4)

    form = SubscribeForm()
    if form.validate_on_submit():
        email = Subscription(email=form.email.data)
        db.session.add(email)
        db.session.commit()
    return render_template('index.html', title=title, posts=posts, form=form)
Example #14
0
def subscription():
    form = SubscriptionForm()

    if form.validate_on_submit():
        sub = Subscription(name=form.name.data,
                           cost=form.cost.data,
                           currency=form.currency.data,
                           billing_date=form.billing_date.data,
                           active=True)

        db.session.add(sub)
        db.session.commit()

        flash(f'Added \'{form.name.data}\' to subscriptions')
        return redirect(url_for('index'))
    return render_template('subscription.html', form=form, action='Create')
Example #15
0
def record_subscription(user_id, plan_type='Basic'):
    exists = User.query.get(user_id).subscription.all()
    if exists:
        logging.info('User already have a subscription !')
        return 0
    else:
        s = Subscription(
            plan_type=plan_type,
            user_id=user_id,
            max_results=subscription_plans()[plan_type]['max_results'],
            monthly_price_eur=subscription_plans()[plan_type]
            ['monthly_price_eur'],
            unlimited=subscription_plans()[plan_type]['unlimited'])
        db.session.add(s)
        db.session.commit()
        logging.info("User's subscription correctly set!")
        return s.id
Example #16
0
 def post(self):
     log(log.INFO, "POST subscription start")
     args = self.post_args.parse_args()
     log(log.DEBUG, "subs args: %s", args)
     status = check_token(args)
     if status["status"] == "success":
         log(log.DEBUG, "Token is valid")
         account = Account.query.filter_by(
             ad_login=args["ad_login"]).first()
         if account:
             log(log.DEBUG, "Account was found")
             try:
                 activeDate = datetime.fromtimestamp(
                     int(args["activation_date"]))
                 log(log.DEBUG, "Activation date from request: %s",
                     activeDate)
                 sub = Subscription()
                 sub.subscr_type = Subscription.SubscriptionType(
                     args["subscr_type"])
                 sub.subscr_period = Subscription.SubscriptionPeriod(
                     args["subscr_period"])
                 sub.activated_at = activeDate
                 sub.account_id = account.id
                 sub.save()
                 log(log.DEBUG, "Subscription was created")
                 return {
                     "status": "success",
                     "message": "Subscription was created",
                     "data": sub.to_json(),
                 }
             except Exception as e:
                 log(log.ERROR, "Internall error: %s", e)
                 return {
                     "status": "error",
                     "message": str(e),
                 }
         else:
             log(log.ERROR, "Wrong account id")
             return {
                 "status": "error",
                 "message": "Wrong account id",
             }
     else:
         log(log.ERROR, "Token error: %s", status.message)
         return status
Example #17
0
File: tasks.py Project: emillon/pod
def get_feed(url, and_subscribe=None):
    """
      - download a RSS url
      - make a Feed entry for it
      - populate corresponding Episodes

    kwargs

    and_subscribe: if not None, the specified userid gets subscribed to it.
    """
    feedp = feedparser.parse(url)
    feed = Feed(url, feedp)
    db.session.add(feed)
    db.session.flush()
    for entry in feedp['entries']:
        title = entry['title']
        enclosure = find_enclosure(entry)
        episode = Episode(feed.id, title, enclosure)
        db.session.add(episode)
    if and_subscribe is not None:
        userid = and_subscribe
        sub = Subscription(feed.id, userid)
        db.session.add(sub)
    db.session.commit()
Example #18
0
def subscriptions_create():
    """ Function to create new subscription plan """
    try:
        if current_user.user_type != 'admin':
            flash('You are not allowed to access this page', 'danger')
            return redirect(url_for('userbp.dashboard'))
        configure_paypal()
        form = payment_form.create_plan()
        if form.validate_on_submit():
            billing_plan_attributes = {
                "name":
                request.form['name'],
                "description":
                request.form['description'],
                "merchant_preferences": {
                    "auto_bill_amount": "yes",
                    "cancel_url": url_for('paymentbp.cancel', _external=True),
                    "initial_fail_amount_action": "continue",
                    "max_fail_attempts": "1",
                    "return_url": url_for('paymentbp.execute', _external=True),
                    "setup_fee": {
                        "currency": 'USD',
                        "value": request.form['setup_fee']
                    }
                },
                "payment_definitions": [{
                    "amount": {
                        "currency": 'USD',
                        "value": request.form['amount']
                    },
                    "cycles":
                    "0",
                    "frequency":
                    request.form['frequency'],
                    "frequency_interval":
                    "1",
                    "name":
                    request.form['payment_definition_name'],
                    "type":
                    'Regular'
                }],
                "type":
                'INFINITE'
            }
            billing_plan = BillingPlan(billing_plan_attributes)
            if billing_plan.create():
                subs = Subscription(
                    subscription_name=request.form['name'],
                    subscription_price=Decimal(request.form['amount']),
                    subscription_id=billing_plan.id,
                    subscription_details=request.form['description'],
                    created_at=func.now(),
                    updated_at=func.now(),
                    status=False)
                db.session.add(subs)
                db.session.commit()
                flash('Plan is Created', 'success')
                return redirect(url_for('paymentbp.subscriptions'))
            else:
                flash('Plan could not Created', 'danger')
                errorlog.error('Subscription Create Error',
                               details=str(billing_plan.error))
        return render_template('payment/create_plan.html', cform=form)
    except Exception as err:
        errorlog.error('Subscription Create Error', details=str(err))
        return render_template('error.html', message="Error!")
Example #19
0
 def setUp(self):
     self.new_subie = Subscription(name='Jon Snow',
                                   email='*****@*****.**')
Example #20
0
 def setUp(self):
     self.new_subscriber = Subscription(id=123,
                                        name='banana',
                                        email='*****@*****.**')
Example #21
0
 def test_subscribed_tv_order_by_watched(self):
     u1 = User(username='******', password='******', email='*****@*****.**')
     u2 = User(username='******', password='******', email='*****@*****.**')
     tv1 = TV(name='a',
              serialized='1',
              tv_type='剧情',
              country='中国',
              tv_release='2018-8-9')
     tv2 = TV(name='b',
              serialized='2',
              tv_type='戏剧',
              country='加拿大',
              tv_release='2015-8-9')
     tv3 = TV(name='c',
              serialized='1',
              tv_type='言情/古装',
              country='中国',
              tv_release='2018-8-9')
     tv4 = TV(name='d',
              serialized='2',
              tv_type='纪录片',
              country='中国',
              tv_release='2014-8-9')
     tv5 = TV(name='e',
              serialized='1',
              tv_type='剧情',
              country='日本',
              tv_release='2013-8-9')
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(tv1)
     db.session.add(tv2)
     db.session.add(tv3)
     db.session.add(tv4)
     db.session.add(tv5)
     db.session.commit()
     s1 = Subscription(user_id=u1.id, tv_id=tv1.id)
     s2 = Subscription(user_id=u1.id, tv_id=tv2.id)
     s3 = Subscription(user_id=u1.id, tv_id=tv3.id)
     s4 = Subscription(user_id=u1.id, tv_id=tv5.id)
     db.session.add(s1)
     db.session.add(s2)
     db.session.add(s3)
     db.session.add(s4)
     db.session.commit()
     h1 = HistoryTV(user_id=u1.id,
                    tv_id=tv1.id,
                    timestamp_watched=datetime.datetime(2019, 1, 1))
     h2 = HistoryTV(user_id=u1.id,
                    tv_id=tv2.id,
                    timestamp_watched=datetime.datetime(2019, 1, 3))
     h3 = HistoryTV(user_id=u1.id,
                    tv_id=tv3.id,
                    timestamp_watched=datetime.datetime(2019, 1, 5))
     h4 = HistoryTV(user_id=u1.id,
                    tv_id=tv5.id,
                    timestamp_watched=datetime.datetime(2019, 1, 12))
     h5 = HistoryTV(user_id=u2.id,
                    tv_id=tv4.id,
                    timestamp_watched=datetime.datetime(2019, 1, 18))
     db.session.add(h1)
     db.session.add(h2)
     db.session.add(h3)
     db.session.add(h4)
     db.session.add(h5)
     db.session.commit()
     result = u1.subscribed_tv_order_by_watched().all()
     r_s = [i.subscribed_tv for i in u1.subscribed_tv.all()]
     assert len(result) == len(r_s)
     assert result[0].id == tv5.id
     assert result[-1].id == tv1.id
     assert tv4 not in r_s
     assert u2.subscribed_tv_order_by_watched().first() is None