def delete_products(skus): try: with create_session() as s: for p in _get_products(skus, s): s.delete(p) except: raise return 'Delete failed' return 'Deleted'
def activate_review_objects(uris): try: with create_session() as s: for o in _get_review_objects(s, uris, is_active=False): o.flags = o.flags & ~constants.CONST_FLAGS_INACTIVE except: raise return 'Activate failed' return ''
def delete_legal_entities(ids): try: with create_session() as s: for p in _get_legal_entities(ids, s): s.delete(p) except: raise return 'Delete failed' return 'Deleted'
def create_a_comment(body): try: with create_session() as s: o = Comment() o.body = body s.add(o) return '' except Exception as e: logging.warning(e) return 'Write a comments failed'
def delete_review_objects(uris): try: with create_session() as s: for o in _get_review_objects(s, uris, is_active=False): if o.flags & o.flags | constants.CONST_FLAGS_INACTIVE: return 'Design already deleted' o.flags = o.flags | constants.CONST_FLAGS_INACTIVE except: raise return 'Delete failed' return ''
def report_review_objects(uris): try: with create_session() as s: for o in _get_review_objects(s, uris): if o.flags & constants.CONST_FLAGS_REPORTED: return 'Design already reported' o.flags = o.flags | constants.CONST_FLAGS_INACTIVE o.flags = o.flags | constants.CONST_FLAGS_REPORTED except: raise return 'Report failed' return ''
def create_product(form): try: with create_session() as s: p = Product(form) if _get_products([p.sku], s): return 'Existed' else: s.add(p) return p.sku except: raise return 'Failed'
def create_legal_entity(form): try: with create_session() as s: w = LegalEntity(form) if _get_legal_entities([w.id], s): return 'Existed' else: s.add(w) return w.id except: raise return 'Failed'
def send_notifications(): try: context = {} with create_session() as s: last_notification_sent = s.query(Notification).order_by( Notification.id.desc()).first() last_timestamp = float(last_notification_sent.created_at_utc ) if last_notification_sent else -1 logging.warning('last sent at %s' % last_timestamp) for user in l._get_users(s): try: context[user.id] = {} total_num_of_reviews = 0 for design in user.designs: if len(design.reviews) > 0: context[user.id][design.uri] = { 'name': design.description, 'reviews': [] } for review in design.reviews: if float(review.created_at_utc ) > last_timestamp: new_review = { 'body': review.body, 'timestamp': utils.epoch_to_datetime_string( review.created_at_utc) } context[user.id][design.uri][ 'reviews'].append(new_review) total_num_of_reviews = total_num_of_reviews + 1 if total_num_of_reviews: subject = 'A summary of your recent design submissions' body = emailer.new_review_template.render( designs_dict=context[user.id]) receivers = [user.email] emailer.send_html(receivers, subject, body) logging.warning('sent on user %s with email %s' % (user.id, user.email)) else: logging.warning( 'no new reviews on user %s, skip sending email' % user.id) except: logging.warning('hey user %s email failed' % user.email) o = Notification() o.updated_at_utc = time.time() s.add(o) except Exception as e: logging.warning(e) return 'Failed'
def create_a_review(review_object_uri, body, email=None): try: with create_session() as s: r = _get_review_objects(s, [review_object_uri]) if not r: return 'Invalid review object uri' o = Review() o.review_object_uri = review_object_uri o.body = body # touch time o.updated_at_utc = time.time() s.add(o) return '' except: raise return 'Failed to post a review, please try again.'
def get_one_design(uri): """This is the api endpoint to get all related information for designs i.e, reviews, thumbnail image links, user info, upvotes, etc. Returns: list of dicts """ try: with create_session() as s: designs = _get_review_objects(s, uris=[uri], is_active=False) if designs: return _build_design_context(designs[0]) else: return {} except: raise return 'Failed'
def get_reviews(uris=None, timestamp=None): try: context = [] with create_session() as s: reviews = _get_reviews(s, uris=uris, timestamp=None) for review in reviews: new_review = { 'body': review.body, 'timestamp': utils.epoch_to_datetime_string(review.created_at_utc) } context.append(new_review) return context except: raise return 'Failed'
def get_all_active_designs(uris=None): """This is the api endpoint to get all related information for designs i.e, reviews, thumbnail image links, user info, upvotes, etc. Returns: list of dicts """ try: context = [] with create_session() as s: designs = _get_review_objects(s, uris=uris) for design in designs: new_design = _build_design_context(design) context.append(new_design) logging.warning(context) return context except: raise return 'Failed'
def touch_thumbnail(review_object_uri, filename, size_code): try: with create_session() as s: o = _get_thumbnail(s, [review_object_uri], [filename]) if not o: o = Thumbnail() else: o = o[0] logging.warning('updating existing thumbnail') o.review_object_uri = review_object_uri o.filename = filename o.size_code = size_code # touch time o.updated_at_utc = time.time() s.add(o) return 'touch thumbnail succeeded' except: raise return 'Failed'
def create_transaction(form): try: with create_session() as s: t = Transaction(form) entities = _get_legal_entities( [t.from_legal_entity, t.to_legal_entity], s) if len(entities) != 2: return 'Invalid entity ids' products = _get_products([t.product_sku], s) if len(products) != 1: return 'Invalid product sku' if _get_txns([t.id], s): return 'Existed' else: s.add(t) return t.id except: raise return 'Failed'
def touch_review_object(uri, filename=None, email=None, name=None, description=None): try: with create_session() as s: o = _get_review_objects(s, [uri]) if not o: o = ReviewObject() else: o = o[0] logging.warning('updating existing design') if filename: logging.warning('updating filename!!') o.filename = filename # always update name and desc logging.warning('updating desc!') o.description = description logging.warning('updating name!') o.name = name if not o.uri: o.uri = uri else: logging.warning('not updating uri for existing design') # touch time o.updated_at_utc = time.time() # try create the user if email: user = touch_user(s, email) o.uid = user.id logging.warning('the user id is: %s' % o.uid) s.add(o) return 'touch design succeeded' except: raise return 'Failed'
def get_txns(ids): """Return a list of Transaction object in strings""" with create_session() as s: return [t.to_string() for t in _get_txns(ids, s)]
def get_legal_entities(ids): """Return a list of Product object in strings""" with create_session() as s: return [w.to_string() for w in _get_legal_entities(ids, s)]
def get_email_by_uid(uid): with create_session() as session: q = session.query(User) q = q.filter(User.id == uid) user = q.first() return user.email if user else ''
def get_products(skus): """Return a list of Product object in strings""" with create_session() as s: return [w.to_string() for w in _get_products(skus, s)]
def get_active_review_objects(uris=None): """Return a list of ReviewObject object in strings""" with create_session() as s: return _get_review_objects(s, uris)
def record_point(point: WeatherPoint): session = session_factory.create_session() session.add(point) session.commit() session.close()