コード例 #1
0
 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]
     }
コード例 #2
0
ファイル: person.py プロジェクト: ethanwhite/impactstory-tng
    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
コード例 #3
0
ファイル: person.py プロジェクト: ethanwhite/impactstory-tng
 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')
コード例 #4
0
 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')
コード例 #5
0
ファイル: person.py プロジェクト: ethanwhite/impactstory-tng
    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)
コード例 #6
0
    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
コード例 #7
0
ファイル: badge.py プロジェクト: pombredanne/impactstory-tng
    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