def post_property(data): if data: try: old_data = json.loads(data) email = putil.validate_for_user_id_exists(old_data.get("user_id")) subs_doc = putil.validate_for_postings_available(email) data = putil.validate_property_posting_data(old_data,"property_json/property_mapper.json") putil.validate_property_status(data.get("status")) custom_id = "PROP-" + cstr(int(time.time())) + '-' + cstr(random.randint(10000,99999)) data["property_id"] = custom_id meta_dict = add_meta_fields_before_posting(old_data) data.update(meta_dict) # return store_property_photos_in_propshikari(old_data.get("property_photos"),custom_id) property_photo_url_dict = store_property_photos_in_propshikari(old_data.get("property_photos"),custom_id) data["full_size_images"] = property_photo_url_dict.get("full_size",[]) data["thumbnails"] = property_photo_url_dict.get("thumbnails",[]) data["property_photo"] = property_photo_url_dict.get("thumbnails")[0] if len(property_photo_url_dict.get("thumbnails")) else "" data["posted_by"] = old_data.get("user_id") data["user_email"] = email data["posting_date"] = data.get("posting_date") if data.get("posting_date") else data["creation_date"] data["amenities"] = putil.prepare_amenities_data(data.get("amenities",""), data.get("property_type")) data["flat_facilities"] = putil.prepare_flat_facilities_data(data.get("flat_facilities",""), data.get("property_type")) data["possession_status"] = "Immediate" if data.get("possession") else data.get("possession_date") data.pop("possession_date", None) es = ElasticSearchController() response_data = es.index_document("property",data, custom_id) if subs_doc and response_data.get("created"): subs_doc.posted = cint(subs_doc.posted) + 1 subs_doc.save(ignore_permissions=True) subscription = putil.get_subscriptions(email) response_msg = "Property posted successfully" if response_data.get("created",False) else "Property posting failed" return {"operation":"Create", "message":response_msg, "property_id":response_data.get("_id"), "user_id":old_data.get("user_id"),"data":{"subscriptions":subscription}} except elasticsearch.RequestError,e: raise ElasticInvalidInputFormatError(e.error) except elasticsearch.ElasticsearchException,e: raise ElasticSearchException(e.error)
def get_subscription_of_user(subs_doc, response_data, email): if subs_doc and response_data.get("created"): subs_doc.posted = cint(subs_doc.posted) + 1 subs_doc.save(ignore_permissions=True) return putil.get_subscriptions(email)