Example #1
0
    def on_get(self, req, res):
        user = UserDB()
        users = user.list_user()

        LOG.info(("Users fectched: {0}.").format(
            json.dumps(users).decode("unicode-escape")))

        res.status = httplib.OK
        res.body = json.dumps(users)
Example #2
0
    def on_put(self, req, res, userId):
        data = req.stream.read()
        data = json.loads(data)

        sche = schema.Schema("password")
        sche.validate(data)

        user = UserDB()
        user.change_password(userId, data['password'])

        res.status = httplib.OK
        res.body = "Password for user %s is changed successfully" % userId
Example #3
0
    def on_post(self, req, res):
        data = req.stream.read()
        data = json.loads(data)

        sche = schema.Schema("user")
        sche.validate(data)

        desc = "Normal user"
        if 'description' in data:
            desc = data['description']

        role = 0
        if 'role' in data:
            role = data['role']

        user = UserDB()
        user.add_user(data['id'], data['name'], data['password'], role, desc)

        res.status = httplib.OK
        res.body = "User %s is created successfully" % data['name']
Example #4
0
# t.me/ClassTextBot
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import logging, yaml, telegram
from find_classes import Scraper
from db import UserDB

dbase = UserDB()

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)


def start(update, context):
    reply_markup = telegram.ReplyKeyboardMarkup(
        [[telegram.KeyboardButton('Share contact', request_contact=True)]])
    context.bot.sendMessage(
        chat_id=update.message.chat_id,
        text='Please share your contact so I can verify you with my database: ',
        reply_markup=reply_markup)


def contact(update, context):
    phone_number = update.message.contact.phone_number
    user_id = update.message.contact.user_id
    dbase.add_user_id(phone_number, user_id)
    context.bot.sendMessage(
        chat_id=update.message.chat_id,
        text=
        'Thanks, you\'re verified! Now type /begin to start getting class updates.'
    )
Example #5
0
    def on_delete(self, req, res, userId):
        user = UserDB()
        user.delete_user(userId)

        res.status = httplib.OK
        res.body = "User ID %s delete successfully" % userId
Example #6
0
    def on_post(self, req, res, userId):
        '''
            - check if user exists;
            - check if book exists;
            - check if book number reach maximum;
        '''
        data = req.stream.read()
        data = json.loads(data)

        sche = schema.Schema("book")
        sche.validate(data)

        # Check if user exists
        user = UserDB()
        user_checking = user.get_user(userId)
        if not user_checking:
            res.status = httplib.INTERNAL_SERVER_ERROR
            res.body = "User Id %s not exists. Please create user first.\n" % userId
            return

        book = BookDB()
        # check if book already exists
        book_existing = book.get_book_by_name(userId, data['name'])
        if len(book_existing) != 0:
            res.status = httplib.INTERNAL_SERVER_ERROR
            res.body = "Book %s has already existed." % data['name']
            return

        # check if book amount reach maximum
        counts = book.count_book(userId)
        if counts == MAX_BOOKS_PER_UER:
            res.status = httplib.INTERNAL_SERVER_ERROR
            res.body = "Only %s books can be added. It reaches maximum." % MAX_BOOKS_PER_UER
            return

        # Add book to DB
        if counts == 0:
            bookId = 1
        else:
            bookId = 15
            books = book.list_book(userId)
            for ibook in books:
                bookId = bookId - ibook['ID'] % 10000

            for i in [1, 2, 4, 8]:
                if bookId & i != 0:
                    bookId = i
                    break

        LOG.info(("Book relative ID: [{0}]").format(bookId))

        status = 0
        if 'status' in data:
            status = data['status']

        desc = data['name']
        if desc in data:
            desc = data['description']

        bookId = 10000 * int(userId) + bookId
        book.add_book(userId, bookId, data['name'], status, desc)

        res.status = httplib.OK
        res.body = "Book %s is added successfully" % data['name']
Example #7
0
import math
import datetime
import functools
from flask_restful import Resource, reqparse
from bson.objectid import ObjectId
from db import CommentDB, UserDB, TopicDB
from .settings import ITEMS_PER_PAGE

db = CommentDB()
userDb = UserDB()
topicDb = TopicDB()

class CommentResource(Resource):
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('user_id', type=str)
        parser.add_argument('topic_id', type=str)
        parser.add_argument('page', type=int, default=0)
        args = parser.parse_args()

        comments = None
        if args['user_id'] != None and args['topic_id'] != None:
            comments = db.find({
                'user_id': ObjectId(args['user_id']),
                'topic_id': ObjectId(args['topic_id'])
            })
        elif args['user_id'] != None:
            comments = db.get_by_user_id(args['user_id'])
        elif args['topic_id'] != None:
            comments = db.get_by_topic_id(args['topic_id'])
        else:
Example #8
0
import math
from bson.objectid import ObjectId
from flask_restful import Resource, abort, reqparse
from db import UserDB, CommentDB
from .settings import ITEMS_PER_PAGE

db = UserDB()
commentDb = CommentDB()


class UserResource(Resource):
    def get(self, id):
        parser = reqparse.RequestParser()
        parser.add_argument('topic_id', type=str)
        args = parser.parse_args()

        query = {'user_id': ObjectId(id)}
        if args['topic_id'] != None:
            query['topic_id'] = ObjectId(args['topic_id'])

        user = db.get_by_id(id)
        if user == None:
            abort(404, message='No such user with id %s' % (id))
        user['num_of_topics'] = len(user['topic_ids'])
        user.pop('topic_ids', None)
        user['num_of_messages'] = commentDb.count(query)
        return user


class UserTopicsResource(Resource):
    def get(self, id):