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.')
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")
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
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()
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)
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)
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
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__()
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)
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>")
def post(self): ad = Ad(**request.json) ad.add() return jsonify(ad.to_dict())
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' )