예제 #1
0
 def test_get_or_create(self):
     user1, created1 = get_or_create(User, name='foo', social_id='bar')
     db.session.add(user1)
     db.session.commit()
     user2, created2 = get_or_create(User, name='foo', social_id='bar')
     self.assertTrue(created1)
     self.assertFalse(created2)
     self.assertEquals(user1, user2)
예제 #2
0
def login():

    # get app_access_token if we haven't already
    if not fb_app_access_token:
        generate_fb_app_access_token()

    data = request.get_json()

    fb_user_access_token = data.get('user_access_token')
    if valid_fb_user_access_token(fb_user_access_token):
        fb_id = data.get('fb_id')
        first_name = data.get('first_name')
        last_name = data.get('last_name')
        email = data.get('email')

        user, is_new_user = get_or_create(db.session, User, fb_id=fb_id)

        if is_new_user:
            user = User(fb_id, first_name, last_name, email)
            db.session.add(user)
            db.session.commit()

        login_user(user)

        return 'Logged In'

    return 'Error Logging In', 500
예제 #3
0
파일: tag.py 프로젝트: stravel611/Sponge
 def post(self, record_id):
     """在一条记录下创建一个标签"""
     name = request.form.get('name', '')
     if name:
         record = get_or_raise(RecordM, id=record_id)
         tag = get_or_create(TagM, name=name)
         tag.records.append(record)
         db.session.add(tag)
         db.session.commit()
         return {'status': 201, 'message': 'Created', 'data': tag}, 201
     else:
         raise MissingFormData()
예제 #4
0
def create_word(word_class):
    form = word_class.form()

    if form.validate_on_submit():
        word, created = get_or_create(word_class, dictionary=current_user.dictionary,
                                      **{key: value for key, value in form.data.items() if key != 'next'})
        if created:
            word.save()
            flash('Successfully created word!', 'success')
            return redirect(url_for('main.index'))
        else:
            flash('An identical word already exists.', 'error')

    return render_template('form.html', title='New Word', form=form)
def import_data(csvfile, image_basedir):
    print("importing data")
    counter = Counter()

    with open(csvfile, "r") as f:
        reader = csv.DictReader(f)
        for row in reader:
            product, product_created = get_or_create(models.Product,
                                                     db.session,
                                                     name=row["name"],
                                                     price=row["price"])
            product.description = row["description"]

            brand, brand_created = get_or_create(models.Brand,
                                                 db.session,
                                                 name=row["brand"])
            product.brand = brand
            counter["brands"] += 1
            if brand_created:
                counter["brands_created"] += 1

            for import_tag in row["tags"].split("|"):
                tag, tag_created = get_or_create(models.ProductTag,
                                                 db.session,
                                                 name=import_tag)
                product.tags.append(tag)
                counter["tags"] += 1
                if tag_created:
                    counter["tags_created"] += 1

            secured_filename_with_ext = secure_filename(row["image_filename"])
            with open(os.path.join(image_basedir, row["image_filename"]),
                      "rb") as f:
                image_url = os.path.join(app.config["UPLOAD_FOLDER"],
                                         secured_filename_with_ext)
                thumbnail_url = os.path.join(
                    app.config["UPLOAD_FOLDER"],
                    form.thumbgen_filename(secured_filename_with_ext),
                )
                full_image = Image.open(f)
                full_image = full_image.convert("RGB")
                full_image.save(os.path.abspath(image_url))
                thumbnail_image = Image.open(f)
                thumbnail_image = thumbnail_image.convert("RGB")
                thumbnail_image.thumbnail(app.config["THUMBNAIL_SIZE"],
                                          Image.ANTIALIAS)
                thumbnail_image.save(os.path.abspath(thumbnail_url))
                image = models.ProductImage(image_url=image_url,
                                            thumbnail_url=thumbnail_url)
                image.product = product
                db.session.add(image)
                db.session.commit()
                counter["images"] += 1

            db.session.add(product)
            db.session.commit()
            counter["products"] += 1
            if product_created:
                counter["products_created"] += 1

    print("Products processed=%d (created=%d)" %
          (counter["products"], counter["products_created"]))
    print("Brands processed=%d (created=%d)" %
          (counter["brands"], counter["brands_created"]))
    print("Tags processed=%d (created=%d)" %
          (counter["tags"], counter["tags_created"]))
    print("Images processed=%d" % counter["images"])
예제 #6
0
def admin_get_spider():
    result1 = requests.get(
        url=(current_app.config['SCRAPYD_URL'] + '/listversions.json'),
        params={"project": current_app.config["SCRAPY_PROJECT_NAME"]})
    if result1.status_code != 200:
        return forbidden("请求失败")
    result2 = requests.get(
        url=(current_app.config['SCRAPYD_URL'] + '/listspiders.json'),
        params={"project": current_app.config["SCRAPY_PROJECT_NAME"]})
    if result2.status_code != 200:
        return forbidden("请求失败")
    spiders = []
    # 删除不在spiders的task
    result = Task.query.filter(Task.name.notin_(
        result2.json()['spiders'])).all()
    if len(result) > 0:
        for u in result:
            remove_job(u.name)
            db.session.delete(u)
        db.session.commit()

    # 获取task状态
    if len(result2.json()['spiders']) > 0:
        for item in result2.json()['spiders']:
            task = get_or_create(Task, name=item)
            spiders.append({
                "spider_name":
                task.name,
                "interval":
                task.interval,
                "status":
                1 if
                (current_app.scheduler.get_job(task.name)
                 and current_app.scheduler.get_job(task.name).next_run_time)
                else 0,
                "project_name":
                current_app.config["SCRAPY_PROJECT_NAME"],
                "current_version":
                datetime.fromtimestamp(int(
                    result1.json()['versions'][-1])).strftime(
                        "%Y-%m-%d %H:%M:%S"),
                "history_version":
                datetime.fromtimestamp(int(result1.json()['versions']
                                           [-2])).strftime("%Y-%m-%d %H:%M:%S")
            })

    return jsonify({
        "success": True,
        "data": {
            "data":
            spiders,
            "project_name":
            current_app.config["SCRAPY_PROJECT_NAME"],
            "current_version":
            datetime.fromtimestamp(int(
                result1.json()['versions'][-1])).strftime("%Y-%m-%d %H:%M:%S"),
            "history_version":
            datetime.fromtimestamp(int(
                result1.json()['versions'][-2])).strftime("%Y-%m-%d %H:%M:%S"),
        }
    })