Esempio n. 1
0
def place_ad(chat_id):
    """ Place the ad"""
    u = session.query(User).filter(User.chat_id == int(chat_id)).one()
    ad = Ad(cash_dict[chat_id]['OBJ'].lower(),
            cash_dict[chat_id]['DESCRIPTION'], cash_dict[chat_id]['PRICE'])
    ad.user = u
    session.add(ad)
    session.commit()
    bot.send_message(chat_id, 'Your ad was created.')
Esempio n. 2
0
def build_avito_xml(data):
    list_ads = []
    for item in data:
        list_ads.append(Ad(item))

    ads = etree.Element("Ads", formatVersion="3", target="Avito.ru")

    for item in list_ads:
        if item.validate():
            ad = etree.SubElement(ads, "Ad")
            etree_item(ad, "Id", item.id)
            etree_item(ad, "Category", item.category)
            etree_item(ad, "OperationType", item.operationType)
            etree_item(ad, "DateBegin", item.get_date_begin_text())
            etree_item(ad, "DateEnd", item.get_date_end_text())
            etree_item(ad, "Address", item.address)
            etree_item(ad, "Latitude", item.latitude)
            etree_item(ad, "Longitude", item.longitude)
            etree_item(ad, "Description", item.description)
            etree_item(ad, "Price", item.price)
            etree_item(ad, "CompanyName", item.companyName)
            etree_item(ad, "ManagerName", item.managerName)
            etree_item(ad, "AllowEmail", item.get_allow_email_text())

            if item.images and len(item.images):
                group = etree.SubElement(ad, "Images")
                for url in item.images:
                    etree.SubElement(group, "Images", url=url)

            etree_item(ad, "VideoURL", item.videoURL)
            etree_item(ad, "AdStatus", item.adStatus)
            etree_item(ad, "Rooms", item.rooms)
            etree_item(ad, "Square", item.square)
            etree_item(ad, "Floor", item.floor)
            etree_item(ad, "Floors", item.floors)

            etree_item(ad, "HouseType", item.houseType)
            etree_item(ad, "LeaseType", item.leaseType)
            etree_item(ad, "PropertyRights", item.propertyRights)
            etree_item(ad, "LeaseCommissionSize", item.leaseCommissionSize)
            etree_item(ad, "LeaseDeposit", item.leaseDeposit)
            etree_item(ad, "LeaseBeds", item.leaseBeds)
            etree_item(ad, "LeaseSleepingPlaces", item.leaseSleepingPlaces)

            etree_grouping(ad, "LeaseMultimedia", item.leaseMultimedia)
            etree_grouping(ad, "LeaseAppliances", item.leaseAppliances)
            etree_grouping(ad, "LeaseComfort", item.leaseComfort)
            etree_grouping(ad, "LeaseAdditionally", item.leaseAdditionally)

            etree_item(ad, "MarketType", item.marketType)
            etree_item(ad, "NewDevelopmentId", item.newDevelopmentId)

    tree = etree.ElementTree(ads)
    tree.write("output/avito.xml",
               pretty_print=True,
               xml_declaration=True,
               encoding="utf-8")
Esempio n. 3
0
def get_or_create(session, model, adv_dict):
    instance = session.query(model).filter_by(id=adv_dict['id']).first()
    if instance:
        return instance, True
    else:
        instance = Ad()
        for key, value in adv_dict.items():
            if hasattr(instance, key):
                setattr(instance, key, value)
        session.add(instance)
        return instance, False
Esempio n. 4
0
 def add_ad(self, title, seller_id, car_id):
     """
         Добавить объявление
     :param title: Тайтл объявления
     :param seller_id: айди пользователя-продавца
     :param car_id: айди автомобиля в системе
     :return: Type dict: новое объявление
     """
     new_ad = Ad(title=title, date=time.time(), seller_id=seller_id, car_id=car_id)
     self.session.add(new_ad)
     self.session.commit()
     return new_ad.as_dict()
Esempio n. 5
0
def add_db_entry(url, title):
    """
    Adds the ad to the db
    :param url:
    :param title:
    :return:
    """
    row = Ad(url=url, title=title)
    try:
        row.save()
    except DatabaseError as e:
        logging.exception(e)
Esempio n. 6
0
def create_ad():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']

        try:
            ad = Ad(title=title, body=body)
            db.session.add(ad)
            db.session.commit()
        except:
            print("Unsuccessfully")

        return redirect(url_for('ads.index'))

    form = AdForm()
    return render_template('ads/create_ad.html', form=form)
Esempio n. 7
0
def handle_uploaded_file(f, w):
  print("in huf")
  skipped = False
  results = []
  for row in csv.reader(f, delimiter=','):
    if not skipped:
      skipped = True
    else:
      #print(row)
      a = Ad(name=row[0],
        age=row[1],
        ethnicity=row[2],
        phone_number=row[3],
        location=row[4],
        ad=row[5],
        date=row[6],
        website=w)
      results.append(a)
  return results
Esempio n. 8
0
def ad_add():

    idcrag = request.form['idcrag'].strip()
    description = request.form['description'].strip()
    title = request.form['title'].strip()
    posting_time = request.form['posting_time'].strip()
    scheduled_action = request.form['scheduled_action'].strip()
    repost_timeout = request.form['repost_timeout'].strip()
    prev_action = ""
    prev_act_time = ""
    prev_act_stat = ""
    status = "Not posted"
    idusers = request.form['idusers'].strip()
    idcategory = request.form['category'].strip()
    idarea = request.form['area'].strip()
    replymail = None  #request.form['replymail']
    allowed_actions = "None,add"
    contact_phone = request.form['contact_phone'].strip()
    contact_name = request.form['contact_name'].strip()
    postal = request.form['postal'].strip()
    specific_location = request.form['specific_location'].strip()
    haslicense = request.form['has_license'].strip()
    license_info = request.form['license'].strip()

    a = Ad(idcrag, description, title, posting_time, scheduled_action,
           repost_timeout, prev_action, prev_act_time, prev_act_stat, status,
           idusers, idcategory, idarea, replymail, allowed_actions,
           contact_phone, contact_name, postal, specific_location, haslicense,
           license_info)

    db_session.add(a)

    try:
        db_session.commit()
    except Exception as e:
        db_session.rollback()
        logging.error("Application did not create " + a.__repr__() +
                      " becouse " + e.message)
        raise Exception('DB commit is not OK')

    return a.idads.__str__()
Esempio n. 9
0
def targeting_stats(request, ad_id=None):
    '''
    Return targeting audiency and recommended bid
    '''
    kwargs = dict([(k, v) for k, v in request.POST.items()
                   if k[:6] in ['layout', 'target']])
    if 'account_id' in request.POST:
        try:
            account = Account.objects.get(id=request.POST['account_id'])
        except:
            pass
    elif ad_id:
        try:
            account = Ad.objects.get(id=ad_id).account
        except:
            pass

    stat = TargetingStats.remote.get(ad=Ad(account=account, **kwargs))
    response = stat.__dict__
    del response['_state']
    return JsonResponse(response)
Esempio n. 10
0
def success(request):
  website = None
  tmpname = request.POST['website_name']
  tmpurl = request.POST['website_url']
  try:
    website = Website.objects.get(url=tmpurl)
  except Website.DoesNotExist:
    website = Website(name=tmpname, url=tmpurl)
    website.save()
  data = json.loads(request.POST['ads'])
  for ad in data:
    a = Ad(name=ad['fields']['name'],
        age=ad['fields']['age'],
        ethnicity=ad['fields']['ethnicity'],
        phone_number=ad['fields']['phone_number'],
        location=ad['fields']['location'],
        ad=ad['fields']['ad'],
        date=ad['fields']['date'],
        website=website)
    a.save()
  return HttpResponse("Success! <a href=\"/upload/\">Add More</a> <a href=\"/\">Home</a>")
Esempio n. 11
0
 def post(self):
     ad = Ad(**request.json)
     ad.add()
     return jsonify(ad.to_dict())
Esempio n. 12
0
from models import Ad

try:
    db_postfix = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    db_backup = shutil.copyfile(DB_PATH, f'{DB_PATH}.backup_{db_postfix}')
    print(f'DB backup saved here: {db_backup}')
except Exception as e:
    print(f'Backup error: {e}')

try:
    ads = db.session.query(Ad).filter(Ad.active == True)
    ads_ids = set([ad.id for ad in ads])
    with open('db/ads.json') as file:
        new_ads = json.loads(file.read())
    new_ads_ids = set((new_ad['id'] for new_ad in new_ads))
    ads_ids_to_deactivate = ads_ids.difference(new_ads_ids)
    ads = db.session.query(Ad).filter(Ad.id.in_(ads_ids_to_deactivate)).update(
        {'active': False}, synchronize_session=False)
    db.session.commit()
    print(f'{len(ads_ids_to_deactivate)} ads were deactivated.')
    for new_ad in new_ads:
        db.session.merge(Ad(**new_ad))
    db.session.commit()
    print('{} new ads were upserted with status "active". \n'
          'There are {} entries totally in the database.'.format(
              len(new_ads), len(Ad.query.all())))
except Exception as e:
    print(
        f'Import error: {e}. Please restore you backup DB file and check your json file'
    )