예제 #1
0
 def post(self, group_id):
     user_id = self.get_argument('user_id', '')
     user = User.get(user_id)
     group = Group.get(group_id)
     user.groups.append(group)
     user.save()
     self.redirect(self.reverse_url('member_addition', group_id))
예제 #2
0
 def post(self, group_id):
     user_id = self.get_argument('user_id', '')
     user = User.get(user_id)
     group = Group.get(group_id)
     user.groups.append(group)
     user.save()
     self.redirect(self.reverse_url('member_addition', group_id))
예제 #3
0
 def post(self, group_id):
     form = RoomForm(self.request.arguments)
     if form.validate():
         room = Room(**form.data)
         group = Group.get(group_id)
         group.rooms.append(room)
         group.save()
     self.redirect(self.reverse_url('rooms', group_id))
예제 #4
0
def group_join(group_id):
    user = get_user()
    group = Group.get(group_id)
    if group.get_is_join(user.id):
        group.join_user(user.id, False)
    else:
        group.join_user(user.id, True)
    return redirect(url_for('group_show',group_id = group_id))
예제 #5
0
 def post(self, group_id):
     form = RoomForm(self.request.arguments)
     if form.validate():
         room = Room(**form.data)
         group = Group.get(group_id)
         group.rooms.append(room)
         group.save()
     self.redirect(self.reverse_url('rooms', group_id))
예제 #6
0
 def post(self, group_id):
     form = GroupForm(self.request.arguments)
     if form.validate():
         group = Group.get(group_id)
         group.update(**form.data)
         group.save()
         self.redirect(self.reverse_url('group', group_id))
     else:
         self.redirect(self.reverse_url('group', group_id))
예제 #7
0
 def post(self, group_id):
     form = GroupForm(self.request.arguments)
     if form.validate():
         group = Group.get(group_id)
         group.update(**form.data)
         group.save()
         self.redirect(self.reverse_url('group', group_id))
     else:
         self.redirect(self.reverse_url('group', group_id))
예제 #8
0
    async def get(self):

        group_id = self.request.match_info.get('id')

        if group_id:
            data = serialize(Group.get(Group.id == group_id))
        else:
            data = serialize(Group.select())

        return json_response({'data': data})
예제 #9
0
def group_show(group_id):
    group = Group.get(group_id)
    if group:
        creator = doubanusers.User(id=group.creator_id)
        blog_list = Blog.get_all_by_group(group_id)
        is_join = group.get_is_join(get_user().id)
        member_list = group.get_members()
        return header_render('group_show.html',group=group, creator = creator, 
                              blog_list = blog_list, is_join = is_join, member_list = member_list)
    else:
        abort(404)
예제 #10
0
def blog_create(group_id):
    group = Group.get(group_id)
    if request.method == 'POST':
        title = request.form['blog_title']
        content = request.form['blog_content']
        id = Blog.create(title, content, get_user().id, group_id)
        if not id:
            return header_render('blog_create.html', group = group)
        return redirect(url_for('blog_show',blog_id = id))
    else:
        return header_render('blog_create.html', group = group)
예제 #11
0
파일: admin.py 프로젝트: DlutCS/nserver_py
 def wrapper():
     if not current_user.is_authenticated:
         return error(10111, 'require login')
     args = func.__name__.split('_')
     mod, action = args[0], args[1]
     group_id = User.get(current_user.get_id()).group_id
     if not group_id:
         return error(10112, 'user cannot find group id')
     auth_value = Group.get(group_id).__getattribute__(mod)
     # print "auth_value=", auth_value
     index = action_arr.index(action)
     index = len(action_arr) - index - 1
     if not (auth_value >> index & 1):
         return error(10113, 'cannot access this action')
     return func()
예제 #12
0
    async def patch(self):

        data = await self.request.post()
        group_name = data.get('name')
        group_id = self.request.match_info.get('group_id')
        group = Group.get(Group.id == group_id)

        if group and group_name == group.name:
            raise HTTPBadRequest()

        if Group.filter(Group.name == group_name).exists():
            raise HTTPBadRequest()

        group.name = group_name

        if group.save():
            return HTTPOk()

        return HTTPInternalServerError()
예제 #13
0
 def get(self, group_id):
     group = Group.get(group_id)
     self.render('group/group_users.html', group=group)
예제 #14
0
 def post(self, group_id):
     Group.get(group_id).delete()
     self.redirect(self.reverse_url('groups'))
예제 #15
0
 def get(self, group_id):
     user_name = self.get_argument('user_name', '')
     users = User.search_name(user_name)
     users = [user for user in users if not user.belongs_to_group(group_id)]
     group = Group.get(group_id)
     self.render('group/member_addition.html', users=users, group=group)
예제 #16
0
 def post(self, group_id):
     Group.get(group_id).delete()
     self.redirect(self.reverse_url('groups'))
예제 #17
0
 def get(self, group_id):
     user_name = self.get_argument('user_name', '')
     users = User.search_name(user_name)
     users = [user for user in users if not user.belongs_to_group(group_id)]
     group = Group.get(group_id)
     self.render('group/member_addition.html', users=users, group=group)
예제 #18
0
class TestGroupSubscribe(BaseAsyncTest):
    generic_user_id = ""
    generic_user_data = {}
    generic_group_id = ""
    generic_user_data = {}

    def setUpClass():
        logging.disable(logging.CRITICAL)
        TestGroupSubscribe.generic_user_id = User().create_generic_item()
        TestGroupSubscribe.generic_user_data = User().get_item(TestGroupSubscribe.generic_user_id)
        TestGroupSubscribe.generic_group_id = Group().create_generic_item()
        TestGroupSubscribe.generic_group_data = Group().get_item(TestGroupSubscribe.generic_group_id)
        return

    def test_api_group(self):
        with mock.patch.object(BaseHandler, 'get_current_user') as m:
            m.return_value = User().get_item(self.generic_user_id)
            bodya = urllib.parse.urlencode({})
            bodyb = urllib.parse.urlencode({'groupname': self.generic_group_id})
            bodyc = urllib.parse.urlencode({'groupname': str(time.time())})
            bodyd = urllib.parse.urlencode({'groupname': 'not unique'})
            response0 = self.fetch('/api/groups', body=bodya, method="POST")
            response1 = self.fetch('/api/groups', body=bodyb, method="POST")
            response2 = self.fetch('/api/groups', body=bodyc, method="POST")
            response3 = self.fetch('/api/groups', method="GET")
        self.assertEqual(response0.code, 400)
        self.assertEqual(response1.code, 400)
        self.assertEqual(response2.code, 200, str(response2.error))
        self.assertEqual(response3.code, 200, str(response3.error))

    def test_api_subscribe(self):
        with mock.patch.object(BaseHandler, 'get_current_user') as m:
            m.return_value = User().get_item(self.generic_user_id)
            bodya = tornado.escape.json_encode({'action': 'sub'})
            bodyb = tornado.escape.json_encode({'action': 'sub', 'id': self.generic_group_id})
            bodyc = tornado.escape.json_encode({'action': 'sub', 'id': 'xxx'})
            bodyd = tornado.escape.json_encode({'action': 'unsub', 'id': 'xxx'})
            bodye = tornado.escape.json_encode({'action': 'unsub', 'id': self.generic_group_id})
            response0 = self.fetch('/api/subscribe', body=bodya, method="POST")
            response1 = self.fetch('/api/subscribe', body=bodyc, method="POST")
            response2 = self.fetch('/api/subscribe', body=bodyb, method="POST")
            response3 = self.fetch('/api/subscribe', body=bodyb, method="POST")
            response4 = self.fetch('/api/subscribe', body=bodyd, method="POST")
            response5 = self.fetch('/api/subscribe', body=bodye, method="POST")
            response6 = self.fetch('/api/subscribe', body=bodye, method="POST")
        self.assertEqual(response0.code, 400)
        self.assertTrue('id cannot be null' in str(response0.error))
        self.assertEqual(response1.code, 400)
        self.assertTrue('group_id xxx does not correspond' in str(response1.error))
        self.assertEqual(response2.code, 200)
        self.assertEqual(response3.code, 400)
        self.assertTrue('user is already subscribed to this group' in str(response3.error))
        self.assertEqual(response4.code, 400)
        self.assertTrue('group_id xxx does not correspond' in str(response4.error))
        self.assertEqual(response5.code, 200)
        self.assertEqual(response6.code, 400)
        self.assertTrue('user is not yet subscribed to this group' in str(response6.error))

    def _test_group_survey_percolation(self):
        # see surveys in a group's list of active_surveys
        survey_id = Survey().create_generic_item(creator_id=None, item_id=self.generic_group_id, item_type='Group')
        self.generic_group_data = Group().get_item(self.generic_user_id)
        active_surveys = self.generic_group_data.get('active_surveys', [])
        message = "expected survey_id {0} in group {1} active_surveys".format(survey_id, self.generic_group_id)
        self.assertIn(survey_id, active_surveys, message)

    def test_subscribe_unsubscribe_user(self):
        # create a survey and subscribe a user to a group
        survey_id = Survey().create_generic_item(creator_id=None, item_id=self.generic_group_id, item_type='Group')
        Group().subscribe_user(self.generic_user_id, self.generic_group_id)
        self.generic_user_data = User().get_item(self.generic_user_id)
        self.generic_group_data = Group().get_item(self.generic_group_id)
        subscribers = self.generic_group_data.get('subscribers', [])
        subscribed_groups = self.generic_user_data.get('subscribed_groups', [])
        user_unanswered_surveys = self.generic_user_data.get('unanswered_surveys', [])
        message1 = "expected group id {0} in user {1} subscribed_groups".format(self.generic_group_id, self.generic_user_id)
        message2 = "expected user id {0} in group {1} subscribers".format(self.generic_user_id, self.generic_group_id)
        message3 = "expected survey_id {0} in user {1} unanswered_surveys".format(survey_id, self.generic_user_id)
        self.assertIn(self.generic_group_id, subscribed_groups, message1)
        self.assertIn(self.generic_user_id, subscribers, message2)
        self.assertIn(survey_id, user_unanswered_surveys, message3)
        # create a new survey after the user has subscribed and see it percolate to the user
        survey_id2 = Survey().create_generic_item(creator_id=None, item_id=self.generic_group_id, item_type='Group')
        message4 = "expected survey_id {0} in user {1} unanswered_surveys".format(survey_id2, self.generic_user_id)
        self.generic_user_data = User().get_item(self.generic_user_id)
        user_unanswered_surveys = self.generic_user_data.get('unanswered_surveys', [])
        self.assertIn(survey_id2, user_unanswered_surveys, message4)
        pass

    def tearDownClass():
        logging.disable(logging.NOTSET)
        # Drop the database
        Group().delete_item(TestGroupSubscribe.generic_group_id)
        User().delete_item(TestGroupSubscribe.generic_user_id)
예제 #19
0
 def get(self, group_id):
     group = Group.get(group_id)
     self.render('group/group_users.html', group=group)