def get_top_users_by_period(n, p, attr, descending, session) -> List[User]: """ Returns the top "n" users in a period (1 week) sorted by "attr" in descending or ascending order as set by "descending" Parameters ---------- n: int, required the number of users to return p: period weeks, required attr: str, required the column on the users table to sort by descending: bool, required which order to sort the rows by column 'attr' in False = ASC or True =DESC session: Session??, required a database session Returns ------ users: [User] A list including the top n user objects as ordered by attr, desc """ compare_timestamp = helper.get_date_time(datetime.now() - timedelta(weeks=p)) sort_column = getattr(User, attr).desc( ) if descending else getattr(User, attr) users = session.query(User) \ .filter(User.sign_up_timestamp >= compare_timestamp) \ .order_by(sort_column) \ .limit(n).all() return users
def submission1(): three_days_ago = helper.get_date_time( datetime.now() - timedelta(days=3)) submission = Submission() submission.id = str(uuid4()) submission.mail = "*****@*****.**" submission.submission_date = three_days_ago return submission
def create_review(id: int, item_id: str, user_id: str=None, status: str=None, finish_time=None) -> Review: review = Review() review.id = id review.item_id = item_id review.user_id = user_id review.status = status if finish_time == None: review.finish_timestamp = get_date_time_now() else: review.finish_timestamp = get_date_time(finish_time) return review
def anonymize_unconfirmed_submissions(session): two_days_ago = helper.get_date_time(datetime.now() - timedelta(days=2)) submissions = session.query(Submission).filter( Submission.status == 'unconfirmed', Submission.submission_date < two_days_ago).all() counter = 0 for submission in submissions: submission.mail = None session.merge(submission) counter += 1 session.commit() return counter