コード例 #1
0
    def get(self, tag_id):
        response = ResponseModel()
        q = self.get_argument("q", strip=True, default=False)
        try:
            nresults = int(
                self.get_argument("nresults", strip=True, default=50))
            page = int(self.get_argument("page", strip=True, default=1))
            tagids = self.get_argument("tag_ids", strip=True, default=False)

            if q:
                response.model['tags'], error = yield gen.Task(
                    CallIT.gen_run, TagActions._get_tags_by_freq, q, nresults,
                    page)
            elif tagids:
                response.model['tags'], error = yield gen.Task(
                    CallIT.gen_run, TagActions._get_tags_by_ids, tagids)
            elif tag_id != None:
                response.model['tags'], error = yield gen.Task(
                    CallIT.gen_run, TagActions._get_tag_by_id, tag_id)
            else:
                response.model['tags'], error = yield gen.Task(
                    CallIT.gen_run, TagActions._get_top_tags, nresults, page)
            if not response.model['tags']:
                self.set_status(404, "Tag not found")
        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #2
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def get(self, id):
        response = ResponseModel()
        try:

            if id == None:
                raise Exception("No id provided")
            detailed = self.get_argument("detailed", False)
            fields = self.get_argument("fields", default=[])
            if fields != []:
                fields = fields.split(",")
            elif self.current_uid != id and detailed:
                raise Exception("Invalid Permissions")
            else:
                response.model['user'], error = yield gen.Task(
                    CallIT.gen_run,
                    UserActions._get_user_by_id,
                    id,
                    detailed=False,
                    includes=fields)
                if response.model['user'] == None:
                    self.set_status(404, "User not found")

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #3
0
ファイル: auth.py プロジェクト: CarbonComputed/flotag
    def post(self):
        try:
            username = self.get_json_arg("username", strip=True)
            password = self.get_json_arg("password", strip=True)
            response = ResponseModel()
            print username,password

            user = yield gen.Task(AuthActions._login,username, password)
            if user != None and user.active:
                self.set_current_user(user)
                self.uid = user.id
                self.username = user.username
                response.success = user != None
                response.model['user'] = user
                self.write_json(response)
            else:
                self.set_status(401, "Unauthorized")
                if not user.active:
                    response.args['Message'] = 'You must verify your email first'
                    response.args['Error'] = 1
                    self.write_json(response)
                    return

        except AttributeError as e:
            logger.error(self.request)
            self.set_status(401, "Unauthorized")
        except:
            self.set_status(401, "Unauthorized")
コード例 #4
0
ファイル: vote.py プロジェクト: CarbonComputed/flotag
 def post(self):
     response = ResponseModel()
     try:
         
         vote_model = self.get_json_model("vote")
         state = vote_model['state']
         post_id = vote_model['post_id']
         user = yield gen.Task(UserActions._get_me_by_id,self.current_uid())
         post = yield gen.Task(PostActions._get_post_by_id,post_id)
         reply_id = vote_model.get('reply_id',None)
         vote = None
         if reply_id == None:
             if state == 1:
                 vote,error = yield gen.Task(CallIT.gen_run,VoteActions._upvote_post,user, post, state)
             elif state == -1:
                 vote,error = yield gen.Task(CallIT.gen_run,VoteActions._downvote_post,user, post, state)
         else:
                 replies =filter(lambda x: x.id == ObjectId(reply_id), post.replies)
                 if len(replies) != 1:
                     raise Exception("There can only be one!!")
                 reply = replies[0]
                 if state == 1:
                     vote,error = yield gen.Task(CallIT.gen_run,VoteActions._upvote_reply,user, post,reply, state)
                 elif state == -1:
                     vote,error = yield gen.Task(CallIT.gen_run,VoteActions._downvote_reply,user, post, reply,state)
         
         response.model = vote
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #5
0
ファイル: user.py プロジェクト: bopopescu/flotag
 def delete(self, username):
     response = ResponseModel()
     try:
         cur_user = yield gen.Task(UserActions._get_user_by_id,
                                   self.current_uid())
         user = yield gen.Task(UserActions._delete_user, cur_user)
         response.model['user'] = user
     except Exception, e:
         response.success = False
         logger.error(e)
コード例 #6
0
ファイル: tag.py プロジェクト: CarbonComputed/flotag
    def get(self):
        response = ResponseModel()
        try:
            nresults = int(self.get_argument("nresults",strip=True,default=50))
            page = int(self.get_argument("page",strip=True,default=1))
            response.model['tags'],error = yield gen.Task(CallIT.gen_run,TagActions._get_tags_by_owner,self.current_uid(),nresults, page)

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #7
0
ファイル: post.py プロジェクト: bopopescu/flotag
 def post(self,post_id):
     response = ResponseModel()
     try:
         post_model = self.get_json_model("post")
         
         user = yield gen.Task(UserActions._get_user_by_id,self.current_uid())
         response.model['post'],error = yield gen.Task(CallIT.gen_run,PostActions._create_post,user, post_model)
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #8
0
ファイル: post.py プロジェクト: bopopescu/flotag
 def delete(self,post_id):
     response = ResponseModel()
     try:
         cur_user = yield gen.Task(UserActions._get_user_by_id,self.current_uid())
         cur_post = yield gen.Task(PostActions._get_post_by_id,post_id)
         post = yield gen.Task (PostActions._delete_post,cur_user,cur_post)
         response.model['post'] = post
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #9
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def get(self, username=None):
        response = ResponseModel()
        try:
            if username == None:
                username = self.current_uid()
            tags, error = yield gen.Task(CallIT.gen_run,
                                         UserActions._get_followers, username)
            response.model['followers'] = tags

        except Exception, e:
            response.success = False
            logger.error(e)
コード例 #10
0
ファイル: tag.py プロジェクト: CarbonComputed/flotag
    def get(self):
        response = ResponseModel()
        try:
            nresults = int(self.get_argument("nresults",strip=True,default=1))
            excludes = self.get_argument("exclude",strip=True,default="[]")
            excludes = loads(excludes)
            response.model['tags'],error = yield gen.Task(CallIT.gen_run, TagActions._get_tags_by_random,excludes,nresults)

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #11
0
ファイル: user.py プロジェクト: bopopescu/flotag
 def get(self):
     response = ResponseModel()
     try:
         nresults = int(
             self.get_argument("nresults", strip=True, default=20))
         page = int(self.get_argument("page", strip=True, default=1))
     except Exception, e:
         response.success = False
         response.args['Message'] = "Error parsing arguments"
         logger.error(e)
         self.write_json(response)
         return
コード例 #12
0
ファイル: auth.py プロジェクト: CarbonComputed/flotag
    def post(self,username=None):
        response = ResponseModel()
        try:
            old_pass = self.get_argument("old_pass", strip=True)
            new_pass = self.get_argument("new_pass", strip=True)
            curr_user = yield gen.Task(UserActions._get_user_by_id,self.current_uid(),detailed=True,deref=False)
            success = yield gen.Task(AuthActions._change_password,curr_user, old_pass, new_pass)
            response.model['password_change'] = success
#             print user.default_tags
        except Exception, e:
            response.success = False
            logger.error(e)
コード例 #13
0
 def post(self,post_id,reply_id):
     response = ResponseModel()
     try:
         reply_model = self.get_json_model("reply")
         
         content = reply_model['content']
         user = yield gen.Task(UserActions._get_user_by_id,self.current_uid())
         response.model['reply'],error = yield gen.Task(CallIT.gen_run,ReplyActions._create_reply,user, post_id,content,reply_id)
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #14
0
ファイル: post.py プロジェクト: bopopescu/flotag
 def get(self,post_id):
     response = ResponseModel()
     try:
         nresults = int(self.get_argument("nresults",strip=True,default=25))
         page = int(self.get_argument("page",strip=True,default=1))
         sort = self.get_argument('sort',strip=True,default='erank')
         tags = self.get_argument("tags", default=None, strip=True)
     except Exception, e:
         response.success = False
         response.args['Message'] = "Error parsing arguments"
         logger.error(e)
         self.write_json(response)
         return  
コード例 #15
0
    def get(self,post_id,reply_id):
        response = ResponseModel()

        try:
            sort = self.get_argument("sort", default=None, strip=True)
            nresults = int(self.get_argument("nresults", default=300, strip=True))
            page = int(self.get_argument("page", default=1, strip=True))
        except Exception, e:
            response.success = False
            response.args['Message'] = "Error parsing arguments"
            logger.error(e)
            self.write_json(response)
            return  
コード例 #16
0
 def put(self,post_id,reply_id):
     response = ResponseModel()
     try:
         if post_id == None or reply_id == None:
             raise Exception("You need a postId and replyId for this action")
         reply_model = self.get_json_model("reply")
         
         content = reply_model['content']
         user = yield gen.Task(UserActions._get_user_by_id,self.current_uid())
         response.model['reply'] = yield gen.Task(ReplyActions._update_reply,user, post_id,content,reply_id)
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #17
0
    def get(self):
        response = ResponseModel()
        try:
            nresults = int(
                self.get_argument("nresults", strip=True, default=50))
            page = int(self.get_argument("page", strip=True, default=1))
            response.model['tags'], error = yield gen.Task(
                CallIT.gen_run, TagActions._get_tags_by_owner,
                self.current_uid(), nresults, page)

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #18
0
ファイル: search.py プロジェクト: CarbonComputed/flotag
    def get(self):
        response = ResponseModel()
        try:

            query = self.get_argument("q",strip=True)
            fields = self.get_argument("fields",default=[])
            if fields != []:
                fields = fields.split(",")
            
            response.model['search'],error = yield gen.Task(CallIT.gen_run,SearchActions.search,query)
        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #19
0
ファイル: tag.py プロジェクト: CarbonComputed/flotag
 def put(self,tag_id):
     response = ResponseModel()
     try:
         img = self.get_json_model("profile_img",default=None)
         user = yield gen.Task(UserActions._get_me_by_id,self.current_uid())
         tag = yield gen.Task(TagActions._get_tag_by_id,tag_id)
         tag_model = self.get_json_model("tag")
         response.model['tag'] = yield gen.Task(TagActions._update_tag,user, tag,tag_model)
         if img != None:
             yield gen.Task(ProfileImageActions.save_profile_image,tag.id,user, img)
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #20
0
    def get(self):
        response = ResponseModel()
        try:
            nresults = int(self.get_argument("nresults", strip=True,
                                             default=1))
            excludes = self.get_argument("exclude", strip=True, default="[]")
            excludes = loads(excludes)
            response.model['tags'], error = yield gen.Task(
                CallIT.gen_run, TagActions._get_tags_by_random, excludes,
                nresults)

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #21
0
    def get(self):
        response = ResponseModel()
        try:

            query = self.get_argument("q", strip=True)
            fields = self.get_argument("fields", default=[])
            if fields != []:
                fields = fields.split(",")

            response.model['search'], error = yield gen.Task(
                CallIT.gen_run, SearchActions.search, query)
        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #22
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def put(self, username):
        response = ResponseModel()
        try:
            img = self.get_json_model("profile_img", default=None)
            cur_user = yield gen.Task(UserActions._get_me_by_id,
                                      self.current_uid())
            user = yield gen.Task(UserActions._update, cur_user,
                                  self.get_json_model('user'))
            if img != None:
                yield gen.Task(ProfileImageActions.save_profile_image, user.id,
                               user, img)

            response.model['user'] = yield gen.Task(
                UserActions._get_user_by_id, self.current_uid())
        except Exception, e:
            response.success = False
            logger.error(e)
コード例 #23
0
 def put(self, tag_id):
     response = ResponseModel()
     try:
         img = self.get_json_model("profile_img", default=None)
         user = yield gen.Task(UserActions._get_me_by_id,
                               self.current_uid())
         tag = yield gen.Task(TagActions._get_tag_by_id, tag_id)
         tag_model = self.get_json_model("tag")
         response.model['tag'] = yield gen.Task(TagActions._update_tag,
                                                user, tag, tag_model)
         if img != None:
             yield gen.Task(ProfileImageActions.save_profile_image, tag.id,
                            user, img)
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #24
0
ファイル: user.py プロジェクト: bopopescu/flotag
 def get(self, username=None):
     response = ResponseModel()
     try:
         if username == None:
             cur_user, error = yield gen.Task(CallIT.gen_run,
                                              UserActions._get_user_by_id,
                                              self.current_uid())
         else:
             cur_user, error = yield gen.Task(CallIT.gen_run,
                                              UserActions._get_user_by_id,
                                              username)
         tags, error = yield gen.Task(CallIT.gen_run,
                                      UserActions._get_default_tags,
                                      cur_user)
         response.model['tags'] = tags
     except Exception, e:
         response.success = False
         logger.error(e)
コード例 #25
0
ファイル: auth.py プロジェクト: bopopescu/flotag
    def post(self, username=None):
        response = ResponseModel()
        try:
            old_pass = self.get_argument("old_pass", strip=True)
            new_pass = self.get_argument("new_pass", strip=True)
            curr_user = yield gen.Task(UserActions._get_user_by_id,
                                       self.current_uid(),
                                       detailed=True,
                                       deref=False)
            success = yield gen.Task(AuthActions._change_password, curr_user,
                                     old_pass, new_pass)
            response.model['password_change'] = success


#             print user.default_tags
        except Exception, e:
            response.success = False
            logger.error(e)
コード例 #26
0
ファイル: tag.py プロジェクト: CarbonComputed/flotag
 def post(self,tag_id):
     response = ResponseModel()
     img = self.get_json_model("profile_img",default=None)
     try:
         tag_model = self.get_json_model("tag")
         
         user = yield gen.Task(UserActions._get_user_by_id,self.current_uid())
         tag,error = yield gen.Task(CallIT.gen_run,TagActions._create_tag,user, tag_model)
         response.model['tag'] = tag
         if img != None:
             pro_img,error = yield gen.Task(CallIT.gen_run,ProfileImageActions.save_profile_image,tag.id, user, img)
     except Exception, e:
         if isinstance(tag,Document):
             tag.delete()
         if isinstance(pro_img,Document):
             pro_img.delete()
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #27
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def post(self, username=None):
        response = ResponseModel()
        try:
            tags = self.get_json_model('tags')
            cur_user = yield gen.Task(UserActions._get_user_by_id,
                                      self.current_uid(),
                                      detailed=True,
                                      deref=False)
            cur_user.reload()
            user, error = yield gen.Task(CallIT.gen_run,
                                         UserActions._add_tags_default,
                                         cur_user,
                                         tags,
                                         save=True)
            response.model['user'] = "******"
#             print user.default_tags
        except Exception, e:
            response.success = False
            logger.error(e)
コード例 #28
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def post(self, username):
        response = ResponseModel()
        user = None
        pro_img = None
        try:
            rip = self.request.remote_ip
            if rip == '127.0.0.1':
                rip = self.settings['local_ip']
            recaptcha = self.get_json_model("recaptcha")
            cap_resp = captcha.submit(recaptcha['challenge'],
                                      recaptcha['response'],
                                      self.settings['captcha_priv'], rip)
            if not cap_resp.is_valid:
                response.success = False
                response.args['Message'] = 'Captcha Fail'
                response.args['Error'] = 1
                self.write_json(response)
                return
            img = self.get_json_model("profile_img", default=None)
            user_data = self.get_json_model('user')

            user, error = yield gen.Task(CallIT.gen_run, UserActions._register,
                                         user_data, user_data['password'])
            pro_img, error = yield gen.Task(
                CallIT.gen_run, ProfileImageActions.save_profile_image,
                user.id, user, img)
            #Maybe return user here,
            response.model['user'] = "******"
        except Exception, e:
            if isinstance(user, Document):
                user.delete()
            if isinstance(pro_img, Document):
                pro_img.delete()
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
            if "username" in e.message and "duplicate" in e.message:
                response.args['Error'] = 2
            if "email" in e.message and "duplicate" in e.message:
                response.args['Error'] = 3
                self.write_json(response)
                return
コード例 #29
0
    def post(self):
        response = ResponseModel()
        try:

            vote_model = self.get_json_model("vote")
            state = vote_model['state']
            post_id = vote_model['post_id']
            user = yield gen.Task(UserActions._get_me_by_id,
                                  self.current_uid())
            post = yield gen.Task(PostActions._get_post_by_id, post_id)
            reply_id = vote_model.get('reply_id', None)
            vote = None
            if reply_id == None:
                if state == 1:
                    vote, error = yield gen.Task(CallIT.gen_run,
                                                 VoteActions._upvote_post,
                                                 user, post, state)
                elif state == -1:
                    vote, error = yield gen.Task(CallIT.gen_run,
                                                 VoteActions._downvote_post,
                                                 user, post, state)
            else:
                replies = filter(lambda x: x.id == ObjectId(reply_id),
                                 post.replies)
                if len(replies) != 1:
                    raise Exception("There can only be one!!")
                reply = replies[0]
                if state == 1:
                    vote, error = yield gen.Task(CallIT.gen_run,
                                                 VoteActions._upvote_reply,
                                                 user, post, reply, state)
                elif state == -1:
                    vote, error = yield gen.Task(CallIT.gen_run,
                                                 VoteActions._downvote_reply,
                                                 user, post, reply, state)

            response.model = vote
        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #30
0
ファイル: auth.py プロジェクト: bopopescu/flotag
    def post(self):
        try:
            username = self.get_json_arg("username", strip=True)
            password = self.get_json_arg("password", strip=True)
            response = ResponseModel()
            print username, password

            user = yield gen.Task(AuthActions._login, username, password)
            if user != None and user.active:
                self.set_current_user(user)
                self.uid = user.id
                self.username = user.username
                response.success = user != None
                response.model['user'] = user
                self.write_json(response)
            else:
                self.set_status(401, "Unauthorized")
                if not user.active:
                    response.args[
                        'Message'] = 'You must verify your email first'
                    response.args['Error'] = 1
                    self.write_json(response)
                    return

        except AttributeError as e:
            logger.error(self.request)
            self.set_status(401, "Unauthorized")
        except:
            self.set_status(401, "Unauthorized")
コード例 #31
0
ファイル: tag.py プロジェクト: CarbonComputed/flotag
 def get(self,tag_id):
     response = ResponseModel()
     q = self.get_argument("q",strip=True,default=False)
     try:
         nresults = int(self.get_argument("nresults",strip=True,default=50))
         page = int(self.get_argument("page",strip=True,default=1))
         tagids = self.get_argument("tag_ids",strip=True,default=False)
     
         if q:
             response.model['tags'],error = yield gen.Task(CallIT.gen_run,TagActions._get_tags_by_freq,q, nresults, page)
         elif tagids:
             response.model['tags'],error = yield gen.Task(CallIT.gen_run,TagActions._get_tags_by_ids,tagids)
         elif tag_id != None:
             response.model['tags'],error = yield gen.Task(CallIT.gen_run,TagActions._get_tag_by_id,tag_id)
         else:
             response.model['tags'],error = yield gen.Task(CallIT.gen_run,TagActions._get_top_tags,nresults, page)
         if not response.model['tags']:
             self.set_status(404, "Tag not found")
     except Exception, e:
         response.success = False
         response.args['Message'] = e.message
         logger.error(e)
コード例 #32
0
    def post(self, tag_id):
        response = ResponseModel()
        img = self.get_json_model("profile_img", default=None)
        try:
            tag_model = self.get_json_model("tag")

            user = yield gen.Task(UserActions._get_user_by_id,
                                  self.current_uid())
            tag, error = yield gen.Task(CallIT.gen_run, TagActions._create_tag,
                                        user, tag_model)
            response.model['tag'] = tag
            if img != None:
                pro_img, error = yield gen.Task(
                    CallIT.gen_run, ProfileImageActions.save_profile_image,
                    tag.id, user, img)
        except Exception, e:
            if isinstance(tag, Document):
                tag.delete()
            if isinstance(pro_img, Document):
                pro_img.delete()
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #33
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def get(self, username):
        response = ResponseModel()
        try:
            username = username.lower()
            if username == None:
                raise Exception("No username provided")
            detailed = self.get_argument("detailed", False)
            fields = self.get_argument("fields", default=[])
            if fields != []:
                fields = fields.split(",")
            elif self.current_username() != username and detailed:
                raise Exception("Invalid Permissions")
            else:
                response.model['user'], error = yield gen.Task(
                    CallIT.gen_run,
                    UserActions._get_user_by_name,
                    username,
                    detailed,
                    includes=fields)

        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #34
0
ファイル: user.py プロジェクト: bopopescu/flotag
    def post(self, not_id=None):
        response = ResponseModel()

        try:
            user = yield gen.Task(UserActions._get_me_by_id,
                                  self.current_uid())
            if not_id == None:
                resp = UserActions._read_all_notifications(user)
                response.model['read'] = resp
            else:
                resp = UserActions._read_notification(user, not_id)
                response.model['read'] = resp
        except Exception, e:
            response.success = False
            response.args['Message'] = e.message
            logger.error(e)
コード例 #35
0
ファイル: auth.py プロジェクト: bopopescu/flotag
    def get(self):
        response = ResponseModel()
        try:
            uniqueid = self.get_argument('regid', strip=True).lower()
            user = User.objects(reg_id=uniqueid).first()
            if user != None:
                if user.active:
                    response.model['verification'] = True
                    self.write_json(response)
                    return
                user.active = True
                user.save()
                response.model['verification'] = True

            else:
                response.model['verification'] = False
        except Exception, e:
            response.success = False
            response.model['verification'] = False
            logger.error(e)
コード例 #36
0
ファイル: auth.py プロジェクト: CarbonComputed/flotag
 def get(self):
     response = ResponseModel()
     try:
         uniqueid = self.get_argument('regid',strip=True).lower()
         user = User.objects(reg_id=uniqueid).first()
         if user != None:
             if user.active:
                 response.model['verification'] = True
                 self.write_json(response) 
                 return
             user.active = True
             user.save()
             response.model['verification'] = True
             
         else:
             response.model['verification'] = False
     except Exception, e:
         response.success = False
         response.model['verification'] = False
         logger.error(e)
コード例 #37
0
ファイル: auth.py プロジェクト: bopopescu/flotag
 def get(self):
     self.clear_cookie("user")
     response = ResponseModel(success=True)
     self.write_json(response)
コード例 #38
0
ファイル: user.py プロジェクト: bopopescu/flotag
 def get(self):
     response = ResponseModel()
     response.success = True
     response.args['Message'] = "Status: OK"
     self.write_json(response)