def to_dict(self): return { "_id": self.id, # do this too, so it is on top "_full_name": self.full_name, "id": self.id, "orcid_id": self.orcid_id, "email": self.email, "first_name": self.first_name, "given_names": self.given_names, "family_name": self.family_name, "created": date_as_iso_utc(self.created), "updated": date_as_iso_utc(self.updated), "claimed_at": date_as_iso_utc(self.claimed_at), "picture": self.picture, "affiliation_name": self.affiliation_name, "affiliation_role_title": self.affiliation_role_title, "twitter": self.twitter, "depsy_id": self.depsy_id, "subscores": self.subscores, "sources": [s.to_dict() for s in self.sources], "overview_badges": [b.to_dict() for b in self.overview_badges], "badges": [b.to_dict() for b in self.active_badges], "coauthors": self.display_coauthors, "num_orcid_products": self.num_products, # not just ones w metrics "products": [p.to_dict() for p in self.non_zero_products] }
def to_dict(self): ret = { "_id": self.id, # do this too, so it is on top "_full_name": self.full_name, "id": self.id, "orcid_id": self.orcid_id, "email": self.email, "first_name": self.first_name, "given_names": self.given_names, "family_name": self.family_name, "created": date_as_iso_utc(self.created), "updated": date_as_iso_utc(self.updated), "claimed_at": date_as_iso_utc(self.claimed_at), "picture": self.picture, "affiliation_name": self.affiliation_name, "affiliation_role_title": self.affiliation_role_title, "twitter": self.twitter, "depsy_id": self.depsy_id, "campaign": self.campaign, "percent_fulltext": self.openness_proportion, "fresh_orcid": self.fresh_orcid, "num_posts": self.num_posts, "num_mentions": self.num_mentions, "num_orcid_products": len(self.all_products), "mendeley": { "country_percent": as_proportion(self.mendeley_countries), "subdiscipline_percent": as_proportion(self.mendeley_disciplines), "job_title_percent": as_proportion(self.mendeley_job_titles), "mendeley_url": None, "readers": self.mendeley_readers, "percent_of_products": self.mendeley_percent_of_products }, "sources": [s.to_dict() for s in self.sources], "overview_badges": [b.to_dict() for b in self.overview_badges], "badges": [b.to_dict() for b in self.badges_for_api], "coauthors": self.display_coauthors, "subscores": self.subscores, "products": [p.to_dict() for p in self.all_products], "num_twitter_followers": self.num_twitter_followers } # for testing! no products for jason. # if self.orcid_id == "0000-0001-6187-6610": # ret["products"] = [] return ret
def get_token(self): payload = { 'sub': self.orcid_id, 'first_name': self.first_name, 'family_name': self.family_name, 'given_names': self.given_names, 'claimed_at': date_as_iso_utc(self.claimed_at), 'iat': datetime.datetime.utcnow(), 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=999), } token = jwt.encode(payload, os.getenv("JWT_KEY")) return token.decode('unicode_escape')
def email_new_stuff(self): if not self.claimed_at: return if not self.email: return # fake it for now # DATE_NOTIFICATION_EMAILS_STARTED = "2015-07-05" # self.events_emailed = {"emailed": []} DATE_NOTIFICATION_EMAILS_STARTED = "2016-07-01" if not self.events_emailed: self.events_emailed = {"emailed": []} print u"looking for new stuff to email for {}".format(self.email) posts = self.get_posts() posts_to_email = [] for post in posts: post_date_iso = post["posted_on"] if post_date_iso > date_as_iso_utc(self.created): if post_date_iso > DATE_NOTIFICATION_EMAILS_STARTED: if post["url"] not in self.events_emailed["emailed"]: posts_to_email.append(post) if not posts_to_email: print u"nothing to email." return print u"have things to email!" post_urls = [post["url"] for post in posts_to_email] self.events_emailed["emailed"] += post_urls post_count_by_source = {} for post in posts_to_email: source = post["source"] try: post_count_by_source[source] += 1 except KeyError: post_count_by_source[source] = 1 new_event_counts = post_count_by_source.items() details_dict = self.to_dict() details_dict["post_count_to_email"] = new_event_counts send(self.email, "Your research is getting new attention online", "notification", {"profile": details_dict}, for_real=True) # send(self.email, "Your research is getting new attention online", "notification", {"profile": details_dict}, for_real=False) save_email(self.orcid_id, new_event_counts)
def to_dict(self): if self.products: product_list = self.products.keys() resp = { "id": self.id, "name": self.name, "created": date_as_iso_utc(self.created), "support_items": self.support_items, "support_intro": self.support_intro, "support_finale": self.my_badge_type.support_finale, "value": self.value, "importance": self.my_badge_type.importance, "percentile": self.display_percentile_fraction, "sort_score": self.sort_score, "description": self.description, "extra_description": self.my_badge_type.extra_description, "context": self.context, "group": self.my_badge_type.group, "display_name": self.my_badge_type.display_name } return resp
def to_dict(self): if self.products: product_list = self.products.keys() resp = { "id": self.id, "name": self.name, "created": date_as_iso_utc(self.created), "show_in_ui": self.my_badge_type.show_in_ui, "support_items": self.support_items, "support_intro": self.support_intro, "support_finale": self.my_badge_type.support_finale, "value": self.value, "importance": self.my_badge_type.importance, "percentile": self.display_percentile_fraction, "sort_score": self.sort_score, "description": self.description, "extra_description": self.my_badge_type.extra_description, "context": self.context, "group": self.my_badge_type.group, "display_name": self.my_badge_type.display_name } return resp