Пример #1
0
    def post(self, category_id=None):
        if category_id:
            abort(400)
        else:
            args = category_post_parser.parse_args(strict=True)

            user = User.verify_auth_token(args['token'])
            if not user:
                abort(401)

            new_post = Category(args['title'])
            new_post.user = user
            new_post.date = datetime.datetime.now()
            new_post.text = args['text']

            if args['items']:
                for item in args['items']:
                    tag = Item.query.filter_by(title=item).first()

                    # Add the tag if it exists. If not, make a new tag
                    if tag:
                        new_post.tags.append(tag)
                    else:
                        new_tag = Item(item)
                        new_post.tags.append(new_tag)

            db.session.add(new_post)
            db.session.commit()
            return new_post.id, 201
Пример #2
0
def save_category(data, parent, nsmap, status):
    collection_id = get_identifier(data, nsmap)
    if not collection_id:
        return
    category = get_category(data, parent, nsmap)
    if not category:
        category = Category()
        category.uid = collection_id
        category.parent = parent

    category.status = status
    collection_title = data.xpath('./ns:did/ns:unittitle', namespaces=nsmap)
    collection_descr = data.xpath('./ns:scopecontent/ns:p', namespaces=nsmap)
    collection_order_id = data.xpath('./ns:did/ns:unitid', namespaces=nsmap)

    if len(collection_title) and collection_title[0].text:
        category.title = collection_title[0].text
    if len(collection_order_id) and collection_order_id[0].text:
        category.order_id = collection_order_id[0].text
    if len(collection_descr) and collection_descr[0].text:
        category.description = collection_descr[0].text.replace('<lb/>',
                                                                ' ').strip()

    category.save()
    logger.info('dataimport.eadddb.category',
                'category %s saved' % category.id)
    return category
Пример #3
0
    def SaveProduct(self, item):
        # 保存地区信息
        zone = Zone()
        zone.name = item["zone"][0]
        zone.save()
        # 保存分类信息
        category = Category()
        category.category = item["category"][0]
        category.save()
        # 保存产品信息
        product = Product()
        product.name = item["product"][0]
        product.zone = zone
        product.category = category
        product.save()

        # 保存产品详细信息
        product_detail = ProductDetail()
        product_detail.product = product
        product_detail.price = float(item["price"][0])
        # 这里有问题,需要优化
        try:
            product_detail.price = float(item["price"][0])
            product_detail.star = item["star"][0]
        except Exception, e:
            product_detail.price = float(item["price"])
            product_detail.star = 0
Пример #4
0
    def SaveProduct(self, item):
        # 保存地区信息
        zone = Zone()
        zone.name = item["zone"][0]
        zone.save()
        # 保存分类信息
        category = Category()
        category.category = item["category"][0]
        category.save()
        # 保存产品信息
        product = Product()
        product.name = item["product"][0]
        product.zone = zone
        product.category = category
        product.save()

        # 保存产品详细信息
        product_detail = ProductDetail()
        product_detail.product = product
        product_detail.price = float(item["price"][0])
        # 这里有问题,需要优化
        try:
            product_detail.price = float(item["price"][0])
            product_detail.star = item["star"][0]
        except Exception, e :
            product_detail.price = float(item["price"])
            product_detail.star = 0
Пример #5
0
 def form_valid(self, form):
     text = form.cleaned_data['category_name']
     if Category.objects.filter(category_name=text.capitalize()):
         messages.error(self.request,
                        'Категория с таким названием уже существует!')
         return render(self.request, 'add.html', {})
     else:
         category = Category(category_name=text.capitalize())
         category.save()
     return self.get_success_url()
Пример #6
0
def update_category(category_id) -> redirect:
    category = Category().fetch_category_by_id(category_id)

    if not category:
        return abort(404)

    if not Category().update(category_id, request.form):
        flash(['Something went wrong. Please try again'])
        return redirect(
            url_for('dashboard.edit_category', category_id=category_id))

    flash(['Category Successfully updated'])
    return redirect(url_for('dashboard.categories'))
Пример #7
0
def new_post():
    form = CategoryForm()

    if form.validate_on_submit():
        new_post_model = Category(form.title.data)
        new_post_model.text = form.text.data
        new_post_model.publish_date = datetime.datetime.now()
        new_post_model.user = User.query.filter_by(
            username=current_user.username).one()

        db.session.add(new_post_model)
        db.session.commit()

    return render_template('new.html', form=form)
Пример #8
0
def edit_product(product_id):
    product = Product().fetch_product(product_id, current_user.get_id())
    form = ProductForm()

    for item in Category().fetch_user_categories():
        form.categories.choices.append(
            [item.category_name, item.category_name])

    for item in Attachment().fetch_user_attachments():
        form.attachment_file.choices.append(
            [item.attachment_filename, item.original_attachment_filename])

    if not product:
        flash(['Something went wrong. Please try again later'])
        return redirect(url_for('dashboard.products'))

    form.product_name.data = product.name

    if product.product_type == 'item':
        linked_product_items = ProductItem().fetch_active_product_items(
            product.product_items)
        form.items.data = ''.join(linked_product_items)

    else:
        form.attachment_file.data = product.product_attachment.attachment_filename
        form.stock.data = product.stock

    form.price.data = float(product.price)

    return render_template('/dashboard/edit-product.html',
                           product=product,
                           form=form,
                           flashed_message=get_flashed_messages(),
                           attachments=Attachment().fetch_user_attachments())
Пример #9
0
def get_or_create_category(name):
    try:
        category = s.query(Category).get(name=name)
    except:
        category = Category(name=name)
        s.add(category)
        s.commit()
    return category
Пример #10
0
def remove_category(category_id) -> redirect:
    remove = Category().remove_category(category_id)

    if not remove:
        flash(['Something went wrong. Please try again'])
        return redirect(url_for('dashboard.categories'))

    ProductCategory().remove_all_categories(remove)

    flash(['Category Successfully Deleted'])
    return redirect(url_for('dashboard.categories'))
def save_category(parent, title):
    category = get_category(parent, title)
    if not category:
        category = Category()
        category.uid = title
        category.parent = parent
    category.title = title
    category.save()
    logger.info('dataimport.eadddb.category',
                'category %s saved' % category.id)
    return category
Пример #12
0
def create_product() -> render_template:
    form = ProductForm()
    attachments = Attachment().fetch_user_attachments()

    for item in Category().fetch_user_categories():
        form.categories.choices.append(
            [item.category_name, item.category_name])

    for item in attachments:
        form.attachment_file.choices.append(
            [item.attachment_filename, item.original_attachment_filename])

    return render_template('/dashboard/create-product.html',
                           form=form,
                           flashed_message=get_flashed_messages(),
                           attachments=attachments)
Пример #13
0
def add_category() -> redirect:
    form = CategoryForm()

    for item in Product().fetch_user_products():
        form.linked_products.choices.append([item.id, item.name])

    if not form.validate_on_submit():
        flash(list(form.errors.values())[0])
        return redirect(url_for('dashboard.categories'))

    new_category = Category().add(request.form)

    if not new_category:
        flash(['Category already exists'])
        return redirect(url_for('dashboard.categories'))

    flash(['Category Successfully Added'])
    return redirect(url_for('dashboard.categories'))
Пример #14
0
def insert_cat(name):
    (ret, ), = db.session.query(exists().where(Category.name.ilike(name)))

    if ret:
        flash(name + " category already existed.", 'error')
        return False

    else:
        try:
            new_cat = Category(name=name, )
            db.session.add(new_cat)
            db.session.commit()
            return True
        except Exception as e:
            db.session.rollback()
            print(e)
        finally:
            db.session.close()
Пример #15
0
def submit_new_product() -> redirect:
    form = ProductForm()
    attachments = Attachment().fetch_user_attachments()

    for item in Category().fetch_user_categories():
        form.categories.choices.append(
            [item.category_name, item.category_name])

    for item in attachments:
        form.attachment_file.choices.append(
            [item.attachment_filename, item.original_attachment_filename])

    if not form.validate_on_submit():
        flash(list(form.errors.values())[0])
        return redirect(url_for('dashboard.create_product'))

    Product().add(request)

    flash(['Product Successfully Created'])
    return redirect(url_for('dashboard.products'))
Пример #16
0
def edit_category(category_id) -> render_template:
    form = CategoryForm()
    category = Category().fetch_category_by_id(category_id)

    if not cat:
        return abort(404)

    form.linked_products.data = []

    for item in Product().fetch_user_products:
        form.linked_products.choices.append([item.id, item.name])
        for product_cat in ProductCategory().fetch_linked_product_categories(
                item.id):
            if product_cat.category_name == category.category_name:
                form.linked_products.data.append(item.id)

    form.name.data = cat.category_name

    return render_template('/dashboard/edit-category.html',
                           form=form,
                           category=category)
Пример #17
0
def update_product(product_id):
    form = ProductForm()
    attachments = Attachment().fetch_user_attachments()

    for item in Category().fetch_user_categories():
        form.categories.choices.append(
            [item.category_name, item.category_name])

    for item in attachments:
        form.attachment_file.choices.append(
            [item.attachment_filename, item.original_attachment_filename])

    if not form.validate_on_submit():
        flash(list(form.errors.values())[0])
        return redirect(
            url_for('dashboard.edit_product', product_id=product_id))

    if not Product().update(request, product_id):
        flash(['Something went wrong. Please try again later'])
        return redirect(url_for('dashboard.products'))

    flash(['Product Successfully Updated'])
    return redirect(url_for('dashboard.edit_product', product_id=product_id))
Пример #18
0
def init_db():
    import random
    import datetime
    db.create_all()

    default = User('default')
    default.set_password("password")
    db.session.add(default)
    db.session.commit()

    for i in xrange(5):
        new_account = Account()
        new_account.name = "Account {}".format(i + 1)
        new_account.amount = random.random() * (i + 1)
        new_account.description = "random account {}".format(i + 1)
        new_account.user_id = default.id
        new_account.date = datetime.datetime.now()
        db.session.add(new_account)

    db.session.commit()

    for c in candidate_categories:
        db.session.add(Category(c))
    db.session.commit()
Пример #19
0
def addcategory():
    form = AddCategory()

    if request.method == "POST":
        if form.validate_on_submit():
            cat_name = form.name.data

            new_cat = Category(cat_name = cat_name)
            db.session.add(new_cat)
            db.session.commit()
            flash('Category {} added'.format(cat_name))
            
        else:
            flash("Adding new Category unsuccessful")

        return redirect(url_for('menu'))
    else:
        if 'username' in session:
            return render_template('addcategory.html', form = form,
                                    username = session['username'])
        
        else:
            flash("Please Login First", 'danger')
            return redirect(url_for('login'))
Пример #20
0
def category(category_id):
    form = ItemForm()

    if form.validate_on_submit():
        new_category = Category(form.name.title)
        new_category.name = form.name.data
        new_category.text = form.text.data
        new_category.post_id = category_id
        new_category.date = datetime.datetime.now()

        db.session.add(new_category)
        db.session.commit()

    category = Category.query.get_or_404(category_id)
    items = Item.query.filter_by(category_id=category.id).all()
    recent, top_items = sidebar_data()

    return render_template('category.html',
                           category=category,
                           recent=recent,
                           top_items=top_items,
                           form=form)
Пример #21
0
def get_category(data, parent, nsmap):
    return Category.objects(parent=parent, uid=get_identifier(data,
                                                              nsmap)).first()
Пример #22
0
    def save(self):
        records = csv.reader(self.cleaned_data["file"], delimiter=';')

        for line in records:
            if line[1] == "BLC_NAME":
                continue

            balance = Balance.objects.filter(name=line[1])
            if not balance.exists():
                balance = Balance()
                balance.name = line[1]
                balance.save()
            else:
                balance = balance.get()

            group = Group.objects.filter(name=line[3])
            if not group.exists():
                group = Group()
                group.name = line[3]
                group.save()
            else:
                group = group.get()

            budget_user_group = BudgetUserGroup.objects.filter(name=line[5],
                                                               group=group.pk)
            if not budget_user_group.exists():
                budget_user_group = BudgetUserGroup()
                budget_user_group.group = group
                budget_user_group.name = line[5]
                budget_user_group.save()
            else:
                budget_user_group = budget_user_group.get()

            budget_user = BudgetUser.objects.filter(name=line[7],
                                                    group=budget_user_group.pk)
            if not budget_user.exists():
                budget_user = BudgetUser()
                budget_user.group = budget_user_group
                budget_user.name = line[7]
                budget_user.save()
            else:
                budget_user = budget_user.get()

            political_branch = PoliticalBranch.objects.filter(name=line[9])
            if not political_branch.exists():
                political_branch = PoliticalBranch()
                political_branch.name = line[9]
                political_branch.save()
            else:
                political_branch = political_branch.get()

            programme = Programme.objects.filter(name=line[11])
            if not programme.exists():
                programme = Programme()
                programme.name = line[11]
                programme.save()
            else:
                programme = programme.get()

            category = Category.objects.filter(name=line[13],
                                               balance=balance.pk,
                                               budget_user=budget_user.pk,
                                               political_branch=political_branch.pk,
                                               programme=programme.pk)
            if not category.exists():
                category = Category()
                category.balance = balance
                category.budget_user = budget_user
                category.political_branch = political_branch
                category.programme = programme
                category.name = line[13]
                category.save()
            else:
                category = category.get()

            item = Item.objects.filter(category=category.pk, budget_year=self.cleaned_data["year"])
            if not item.exists():
                item = Item()
                item.category = category
                item.budget_year = self.cleaned_data["year"]
                item.value = float(line[14].replace(",", "."))
                item.save()
            else:
                item = item.get()
Пример #23
0
    def product_inserter():
        """Makes category and product insertion in database"""
        # setting the logger
        logger = logging.getLogger(__name__)
        # emptying the database
        Category.objects.all().delete()
        Product.objects.all().delete()
        Nutriments.objects.all().delete()

        i = 0
        # for each category in category list
        for elem in dt.CAT_LIST:
            # Replace some characters with others, so we can use it in API
            elem = elem.replace(" ", "-")
            # create a category in database
            category = Category(category_name=unidecode(elem))
            # save if ok
            try:
                with transaction.atomic():
                    category.save()
            # report error if not ok
            except DatabaseError as cat_error:
                logger.error(cat_error)
                pass

            # get id list using Requester class
            id_list = Requester(elem).product_id_list

            # for each product id in id list
            for product_id in id_list:
                # gather product data with Requester class
                product_data = Product_data(
                    Requester.product_data_requester(product_id))
                # create a product in database
                product = Product(
                    product_name=product_data.name,
                    product_url=product_data.url,
                    product_img=product_data.img,
                    product_nutriscore=product_data.nutriscore,
                    product_category_id=category,
                )
                # create nutriments data affiliated to product
                nutriments = Nutriments(
                    nutriments_product_id=product,
                    nutriments_kj=product_data.energy_kj,
                    nutriments_kcal=product_data.energy_kcal,
                    nutriments_lipids=product_data.lipids,
                    nutriments_fat=product_data.fat,
                    nutriments_carbohydrates=product_data.carbohydrates,
                    nutriments_sugar=product_data.sugar,
                    nutriments_protein=product_data.protein,
                    nutriments_salt=product_data.salt,
                    nutriments_sodium=product_data.sodium,
                )
                # save if ok
                try:
                    with transaction.atomic():
                        product.save()
                        nutriments.save()
                        i += 1
                        print(str(i) + " produit(s) ajouté(s)")
                # report error if not ok
                except DatabaseError as prod_error:
                    logger.error(prod_error)
                    pass
Пример #24
0
def categories() -> render_template:
    return render_template('/dashboard/categories.html',
                           flashed_message=get_flashed_messages(),
                           cats=Category().fetch_user_categories_pagination())
def get_category(parent, uid):
    return Category.objects(parent=parent, uid=uid).first()