Пример #1
0
def simple_category():
    category = model.Category('category', 'category desc', 'category')
    category.meta = {
        'id': 'category id',
        'webtranslateit_ids': {
            'content': 'category translate id'
        }
    }
    section = model.Section(category, 'section', 'section desc', 'section')
    section.meta = {
        'id': 'section id',
        'webtranslateit_ids': {
            'content': 'section translate id'
        }
    }
    article = model.Article(section, 'article', 'body', 'article')
    article.meta = {
        'id': 'article id',
        'webtranslateit_ids': {
            'body': 'body translate id',
            'content': 'article translate id'
        }
    }
    category.sections.append(section)
    section.articles.append(article)
    return category
Пример #2
0
 def fetch(self):
     categories = []
     zendesk_categories = self.req.get_items(model.Category)
     for zendesk_category in zendesk_categories:
         category_filename = utils.slugify(zendesk_category['name'])
         category = model.Category(zendesk_category['name'],
                                   zendesk_category['description'],
                                   category_filename)
         print('Category %s created' % category.name)
         category.meta = zendesk_category
         zendesk_sections = self.req.get_items(model.Section, category)
         categories.append(category)
         for zendesk_section in zendesk_sections:
             section_filename = utils.slugify(zendesk_section['name'])
             section = model.Section(category, zendesk_section['name'],
                                     zendesk_section['description'],
                                     section_filename)
             print('Section %s created' % section.name)
             section.meta = zendesk_section
             zendesk_articles = self.req.get_items(model.Article, section)
             category.sections.append(section)
             for zendesk_article in zendesk_articles:
                 logging.debug('Article Info:' + zendesk_article['title'])
                 if zendesk_article['body']:
                     body = h2t.handle(zendesk_article.get('body', ''))
                     article_filename = utils.slugify(
                         zendesk_article['title'])
                     article = model.Article(section,
                                             zendesk_article['title'], body,
                                             article_filename)
                     print('Article %s created' %
                           article.name.encode('utf-8').strip())
                     article.meta = zendesk_article
                     section.articles.append(article)
     return categories
Пример #3
0
def main():
    '''
    Main function of setup.py
    It fills the tables with products of CATEGORIES in settings.py
    Arguments:
        Pass {string}: password of foodstitute
    '''
    # Parse arguments
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "Pass",
        help="Password of the SQL DB foodstitute for the account" +
        USER
        )
    # Get args
    args = parser.parse_args()
    # Define password
    Pass = args.Pass
    # Connect to DB
    db = model.DataBase(Pass)
    # Drop Tables if exist
    db.drop_Products()
    # Create Tables
    db.create_tables()
    for category in settings.CATEGORIES:
        db.feed_database(model.Category(category))
    # Commit changes
    db.connection.commit()
    # Finally close connection
    db.connection.close()
Пример #4
0
 def fetch(self):
     categories = []
     zendesk_categories = self.req.get_items(model.Category)
     for zendesk_category in zendesk_categories:
         category_filename = utils.slugify(zendesk_category['name'])
         category = model.Category(zendesk_category['name'],
                                   zendesk_category['description'],
                                   category_filename)
         print('Category %s created' % category.name)
         category.meta = zendesk_category
         zendesk_sections = self.req.get_items(model.Section, category)
         categories.append(category)
         for zendesk_section in zendesk_sections:
             section_filename = utils.slugify(zendesk_section['name'])
             section = model.Section(category, zendesk_section['name'],
                                     zendesk_section['description'],
                                     section_filename)
             print('Section %s created' % section.name)
             section.meta = zendesk_section
             zendesk_articles = self.req.get_items(model.Article, section)
             category.sections.append(section)
             for zendesk_article in zendesk_articles:
                 body = html2text.html2text(zendesk_article.get('body', ''))
                 article_filename = utils.slugify(zendesk_article['title'])
                 article = model.Article(section, zendesk_article['title'],
                                         body, article_filename)
                 print('Article %s created' % article.name)
                 article.meta = zendesk_article
                 section.articles.append(article)
     return categories
Пример #5
0
def config():

    try:
        if session['logged_in']:

            if request.method == 'POST' and request.form['budget']:
                budget = request.form['budget']
                dt = datetime.datetime.now().date()

                user_id = getuid()

                bid = m.db.session.query(m.Budget.bid)
                b_uid = bid.all()
                b_uid = len(b_uid) + 1

                budget_add = m.Budget(b_uid, user_id, dt, budget)
                m.db.session.add(budget_add)
                m.db.session.commit()
                flash("Your Budget is Added")
                gc.collect()
                return redirect(url_for('config'))

            if request.method == 'POST' and request.form['category']:
                user_id = getuid()
                cat_toggle = False
                s = m.db.session.query(
                    m.Category.categories).filter_by(uid_fk=user_id)
                cat_cmp = []
                for i in s:
                    cat_cmp.append(i.categories)

                category = request.form['category']

                for i in cat_cmp:
                    if i == category.lower():
                        cat_toggle = True

                if cat_toggle:
                    flash("Category already exist")
                else:
                    cid = m.db.session.query(m.Category.cid)
                    c_uid = cid.all()
                    c_uid = len(c_uid) + 1

                    category_add = m.Category(c_uid, user_id, category.lower())
                    m.db.session.add(category_add)
                    m.db.session.commit()
                    gc.collect()
                    flash("Your Category is Added")
                    return redirect(url_for('config'))

            return render_template('configure.html')
        else:
            return redirect(url_for('login'))
    except:
        return redirect(url_for('login'))
Пример #6
0
def initialize():

    # Adding Restaurant

    res = model.Restaurant(name='Ten Ren')
    res.put()

    # Adding Menus

    din = model.Menu(restaurant=res, name='Dinner Menu')
    din.put()
    lun = model.Menu(restaurant=res, name='Lunch Menu')
    lun.put()

    # Adding Categories

    app = model.Category(name='Appetizers')
    app.menus.append(lun.key())
    app.put()

    sb = model.Category(name='Small Bites')
    sb.menus.append(din.key())
    sb.put()

    lb = model.Category(name='Large Bites')
    lb.menus.append(din.key())
    lb.put()

    # Addding Dishes

    eggRoll = model.Dish(name='Egg Roll')
    eggRoll.categories.append(app.key())
    eggRoll.categories.append(sb.key())
    eggRoll.restaurant = res
    eggRoll.put()

    chickenWings = model.Dish(name='Chicken Wings')
    chickenWings.categories.append(app.key())
    chickenWings.categories.append(lb.key())
    chickenWings.restaurant = res
    chickenWings.put()
Пример #7
0
def parse_category(category):
    """
    Parse a category element

    :param category: A category :class:`xml.etree.ElementTree.Element`
    :rtype: :class:`anidb.model.Category`
    """
    result = model.Category(category.attrib["id"])
    for elem in category:
        setattr(result, elem.tag, elem.text)
    if category.attrib["hentai"] == "true":
        result.hentai = True
    result.weight = category.attrib["weight"]
    if "parentid" in category.attrib:
        result.parentid = category.attrib["parentid"]
    return result
Пример #8
0
def writeArticle(req):
    info = ''
    ret_data = {}

    try:
        arti = model.Article(title=req['title'],
                             content=req['content'],
                             scan_time=0,
                             agree_time=0,
                             uid=req['uid'])
        model.db.session.add(arti)
        model.db.session.commit()
        aid = arti.id
    except Exception as e:
        info = '数据库错误,问题提交失败'
        logger.error(info)
        logger.error(e.message)

        return False, DB_ERR_HAND, info, ret_data

    try:
        tabArr = req['tab'].split(';')
    except KeyError as e:
        info = '请求错误'
        logger.error(info)
        logger.error(e.message)

        return False, DB_ERR_HAND, info, ret_data

    tab_list = []
    for tab in tabArr:
        cid = model.db.session.query(
            model.Category.id).filter_by(category=tab).first()
        if not cid:
            tb = model.Category(category=tab, cid=1)
            model.db.session.add(tb)
            model.db.session.commit()
            cid = tb.id
        else:
            cid = cid[0]
        tab_list.append(model.Article_Category_Rela(aid=aid, cid=cid))
    model.db.session.add_all(tab_list)
    model.db.session.commit()

    return True, SUCCESS, info, ret_data
Пример #9
0
def CreateCategory():
    """
    CreateCategory: Renders the form for creating a new category
    Args:
        None
    Returns:
        html
    """
    if 'email' in login_session:
        user_mail = login_session['email']
    else:
        return redirect(url_for('home'))
    user = db.add_user(user_mail)
    category = model.Category(name='new category', user=user)
    if request.method == 'GET':
        return render_template('add_category.html', category=category)
    else:
        if request.form['name']:
            category.name = request.form['name']
        db.add_item(category)
        return redirect(url_for('home'))
Пример #10
0
def load_businesses(session):
    # f = open("seed_data/businesses_data.csv")
    # for line in f:
    # 	business_data = line.strip().split(",")

    # 	business_id, address, categories, city, name, longitude, state, stars, latitude =
    # 		business_data[0], business_data[1], businesses_data[4], business_data[6],
    # 		business_data[7], business_data[9], business_data[10], business_data[11], business_data[12]

    # 	if "Food" not in categories and "Restaurants" not in categories:
    # 		continue

    # 	new_business = model.Restaurant(id=business_id,
    # 									address=address,
    # 									categories=categories,
    # 									city=city,
    # 									name=name,
    # 									longitude=longitude,
    # 									latitude=latitude,
    # 									state=state,
    # 									stars=stars)

    # 	session.add(new_business)

    # f.close()
    # attributes.Ambience.divey,attributes.Dietary Restrictions.vegan,attributes.Happy Hour,hours.Thursday.open,attributes.Order at Counter,attributes.Hair Types Specialized In.africanamerican,6attributes.Hair Types Specialized In.kids,7attributes.BYOB,hours.Friday.open,8categories,9latitude,10attributes.Outdoor Seating,11attributes.Alcohol,12attributes.Ambience.classy,13attributes.Payment Types.mastercard,14attributes.Parking.lot,15business_id,16attributes.Ambience.touristy,17attributes.Corkage,18hours.Tuesday.open,19attributes.Good For.brunch,20attributes.Payment Types.amex,21name,22hours.Monday.open,23attributes.Waiter Service,24attributes.Parking.street,25attributes.Ambience.hipster,26attributes.BYOB/Corkage,27attributes.Hair Types Specialized In.straightperms,28attributes.Music.live,29attributes.Dietary Restrictions.dairy-free,30attributes.Music.background_music,31attributes.Price Range,32attributes.Good For.breakfast,33attributes.Parking.garage,34attributes.Music.karaoke,35attributes.Good For Dancing,36review_count,37attributes.Hair Types Specialized In.asian,38state,39attributes.Accepts Credit Cards,40hours.Friday.close,41attributes.Good For.lunch,42attributes.Good For Kids,43attributes.Parking.valet,44attributes.Take-out,45full_address,46hours.Thursday.close,47attributes.Hair Types Specialized In.coloring,48attributes.Payment Types.cash_only,49attributes.Good For.dessert,50attributes.Music.video,51attributes.Dietary Restrictions.halal,52attributes.Takes Reservations,53hours.Saturday.open,54attributes.Ages Allowed,55attributes.Ambience.trendy,56attributes.Delivery,57hours.Wednesday.close,58attributes.Wi-Fi,59open,60city,61attributes.Payment Types.discover,62attributes.Wheelchair Accessible,63attributes.Dietary Restrictions.gluten-free,64stars,65attributes.Payment Types.visa,66type,67attributes.Caters,68attributes.Ambience.intimate,69attributes.Music.playlist,70attributes.Good For.latenight,71attributes.Good For.dinner,72attributes.Coat Check,73longitude,74hours.Monday.close,75attributes.Hair Types Specialized In.extensions,76hours.Tuesday.close,77hours.Saturday.close,78attributes.Good for Kids,79attributes.Parking.validated,80hours.Sunday.open,81attributes.Accepts Insurance,82attributes.Music.dj,83attributes.Dietary Restrictions.soy-free,84attributes.Has TV,85hours.Sunday.close,86attributes.Ambience.casual,87attributes.By Appointment Only,88attributes.Dietary Restrictions.kosher,89attributes.Dogs Allowed,90attributes.Drive-Thru,91attributes.Dietary Restrictions.vegetarian,92hours.Wednesday.open,93attributes.Noise Level,94attributes.Smoking,95attributes.Attire,96attributes.Hair Types Specialized In.curly,97attributes.Good For Groups,98neighborhoods,99attributes.Open 24 Hours,100attributes.Ambience.romantic,101attributes.Hair Types Specialized In.perms,102attributes.Music.jukebox,103attributes.Ambience.upscale

    f = open("seed_data/yelp_academic_dataset_business_clean.csv")
    # f = open("seed_data/yelp_academic_dataset_business_clean.csv")
    f.next()
    del_count = 0
    counts = 0
    for line in f:
        if counts > 10:
            session.commit()
            print "Committed"
            counts = 0

        bus_data = line.strip().split("|")
        divey = bus_data[0]
        vegan = bus_data[1]
        happy_hour = bus_data[2]
        open_thurs = bus_data[3]
        counter = bus_data[4]
        byob = bus_data[7]
        open_fri = bus_data[8]
        categories = bus_data[9]
        latitude = bus_data[10] or None
        outdoor_seating = bus_data[11]
        alcohol = bus_data[12]
        classy = bus_data[13]
        mastercard = bus_data[14]
        parking_lot = bus_data[15]
        business_id = bus_data[16]
        touristy = bus_data[17]
        corkage = bus_data[18]
        open_tues = bus_data[19]
        brunch = bus_data[20]
        amex = bus_data[21]
        name = bus_data[22]
        open_mon = bus_data[23]
        waiter = bus_data[24]
        parking_street = bus_data[25]
        hipster = bus_data[26]
        live_music = bus_data[29]
        dairy_free = bus_data[30]
        background_music = bus_data[31]
        price_range = bus_data[32] or None
        breakfast = bus_data[33]
        parking_garage = bus_data[34]
        state = bus_data[39]
        credit_cards = bus_data[40]
        close_fri = bus_data[41]
        lunch = bus_data[42]
        kids = bus_data[43]
        parking_valet = bus_data[44]
        takeout = bus_data[45]
        address = bus_data[46]
        close_thurs = bus_data[47]
        cash_only = bus_data[49]
        dessert = bus_data[50]
        halal = bus_data[52]
        reservations = bus_data[53]
        open_sat = bus_data[54]
        trendy = bus_data[56]
        delivery = bus_data[57]
        close_wed = bus_data[58]
        wifi = bus_data[59]
        is_open = bus_data[60]
        city = bus_data[61]
        discover = bus_data[62]
        wheelchair = bus_data[63]
        gluten_free = bus_data[64]
        stars = bus_data[65] or None
        visa = bus_data[66]
        intimate = bus_data[69]
        latenight = bus_data[71]
        dinner = bus_data[72]
        coat_check = bus_data[73]
        longitude = bus_data[74] or None
        close_mon = bus_data[75]
        close_tues = bus_data[77]
        close_sat = bus_data[78]
        open_sun = bus_data[81]
        soy_free = bus_data[84]
        close_sun = bus_data[86]
        casual = bus_data[87]
        kosher = bus_data[89]
        drive_thru = bus_data[91]
        vegetarian = bus_data[92]
        open_wed = bus_data[93]
        noise_level = bus_data[94]
        groups = bus_data[98]
        neighborhoods = bus_data[99]
        twenty_four = bus_data[100]
        romantic = bus_data[101]
        upscale = bus_data[104]

        # # check to make sure the business is food related
        # if "Food" not in categories and "Restaurants" not in categories:
        # 	del_count += 1
        # 	print del_count
        # 	continue
        # # check to make sure only open businesses are added to the database
        # if is_open == "FALSE":
        # 	continue

        # turn all open and close times to datetime objects
        def parse_time(t):
            t = datetime.strptime(t, "%H:%M")
            return t

        times = [
            open_mon, close_mon, open_tues, close_tues, open_wed, close_wed,
            open_thurs, close_thurs, open_fri, close_fri, open_sat, close_sat,
            open_sun, close_sun
        ]
        datetimes = map(lambda (x): parse_time(x) if x != "" else x, times)

        open_mon = datetimes[0] or None
        close_mon = datetimes[1] or None
        open_tues = datetimes[2] or None
        close_tues = datetimes[3] or None
        open_wed = datetimes[4] or None
        close_wed = datetimes[5] or None
        open_thurs = datetimes[6] or None
        close_thurs = datetimes[7] or None
        open_fri = datetimes[8] or None
        close_fri = datetimes[9] or None
        open_sat = datetimes[10] or None
        close_sat = datetimes[11] or None
        open_sun = datetimes[12] or None
        close_sun = datetimes[13] or None
        # if open_mon:
        # 	open_mon = parse_time(open_mon)
        # if close_mon:
        # 	close_mon = parse_time(close_mon)
        # if open_tues:
        # 	open_tues = parse_time(open_tues)
        # if close_tues:
        # 	close_tues = parse_time(close_tues)
        # if open_wed:
        # 	open_wed = parse_time(open_wed)
        # if close_wed:
        # 	close_wed = parse_time(close_wed)
        # if open_thurs:
        # 	open_thurs = parse_time(open_thurs)
        # close_thurs = parse_time(close_thurs)
        # open_fri = parse_time(open_fri)
        # close_fri = parse_time(close_fri)
        # open_sat = parse_time(open_sat)
        # close_sat = parse_time(close_sat)
        # open_sun = parse_time(open_sun)
        # close_sun = parse_time(close_sun)

        # create a Restaurant object out of the business
        new_business = model.Restaurant(
            id=business_id,
            name=name,
            divey=bool(divey),
            vegan=bool(vegan),
            happy_hour=bool(happy_hour),
            open_thurs=open_thurs,
            counter=bool(counter),
            byob=bool(byob),
            open_fri=open_fri,
            latitude=latitude,
            outdoor_seating=bool(outdoor_seating),
            alcohol=bool(alcohol),
            classy=bool(classy),
            mastercard=bool(mastercard),
            parking_lot=bool(parking_lot),
            touristy=bool(touristy),
            corkage=bool(corkage),
            open_tues=open_tues,
            brunch=bool(brunch),
            amex=bool(amex),
            open_mon=open_mon,
            waiter=bool(waiter),
            parking_street=bool(parking_street),
            hipster=bool(hipster),
            live_music=bool(live_music),
            dairy_free=bool(dairy_free),
            background_music=bool(background_music),
            price_range=price_range,
            breakfast=bool(breakfast),
            parking_garage=bool(parking_garage),
            state=state,
            credit_cards=bool(credit_cards),
            close_fri=close_fri,
            lunch=bool(lunch),
            kids=bool(kids),
            parking_valet=bool(parking_valet),
            takeout=bool(takeout),
            address=address,
            close_thurs=close_thurs,
            cash_only=bool(cash_only),
            dessert=bool(dessert),
            halal=bool(halal),
            reservations=bool(reservations),
            open_sat=open_sat,
            trendy=bool(trendy),
            delivery=bool(delivery),
            close_wed=close_wed,
            wifi=bool(wifi),
            city=city,
            discover=bool(discover),
            wheelchair=bool(wheelchair),
            gluten_free=bool(gluten_free),
            stars=stars,
            visa=bool(visa),
            intimate=bool(intimate),
            latenight=bool(latenight),
            dinner=bool(dinner),
            coat_check=bool(coat_check),
            longitude=longitude,
            close_mon=close_mon,
            close_tues=close_tues,
            close_sat=close_sat,
            open_sun=open_sun,
            soy_free=bool(soy_free),
            close_sun=close_sun,
            casual=bool(casual),
            kosher=bool(kosher),
            drive_thru=bool(drive_thru),
            vegetarian=bool(vegetarian),
            open_wed=open_wed,
            noise_level=noise_level,
            groups=bool(groups),
            twenty_four=bool(twenty_four),
            romantic=bool(romantic),
            upscale=bool(upscale))

        # Parse out the categories list as json
        if categories:
            try:
                c_replace = categories.replace("'", '"')
                c = json.loads(c_replace)
                new_business.categories = [
                    model.Category(category=x) for x in c
                ]
            except ValueError:
                continue

        if neighborhoods:
            try:
                n_replace = neighborhoods.replace("'", '"')
                n = json.loads(n_replace)
                new_business.neighborhoods = [
                    model.Neighborhood(neighborhood=x) for x in n
                ]
            except ValueError:
                continue

        session.add(new_business)
        counts += 1

    session.commit()
    print "Final commit"
Пример #11
0
        r_obj = json.load(f)

        r = model.Recipe(directions=r_obj["directions"],
                         cook_time=r_obj["cook_time"],
                         prep_time=r_obj["prep_time"],
                         serves=r_obj["serves"],
                         title=r_obj["title"],
                         id=fn)

        model.db.session.add(r)

        try:
            category = model.Category.query.filter_by(
                name=r_obj["category"]).one()
        except NoResultFound as e:
            category = model.Category(name=r_obj["category"])
            model.db.session.add(category)

        r.category = category

        for i in r_obj['ingredients']:
            match = ingredient_pattern.match(i)
            amount = match.group(1)
            ingredient = match.group(2)
            instructions = match.group(3)
            try:
                ing = model.Ingredient.query.filter_by(name=ingredient).one()
            except NoResultFound as e:
                ing = model.Ingredient(name=ingredient)
                model.db.session.add(ing)
            r_ing = model.RecipeIngredient(ingredient=ing,
Пример #12
0
 def _instantiate_category(self, zendesk_category):
     attributes, filename = self._get_group_attributes_and_filename(
         zendesk_category)
     category = model.Category(attributes, filename)
     category.meta = zendesk_category
     return category