コード例 #1
0
 def resolve_group(parent, info, id_from_token):
     group = db.query(GroupModel).filter_by(id=parent.group_id).first()
     group_user = db.query(GroupUserModel).filter_by(group_id=parent.group_id).all()
     if id_from_token in group_user.user_id or group.access_level == GroupAccessEnum.OPEN:
         return group
     else:
         return []
コード例 #2
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def changeAccountPW():
	accountId = request.form['accountId']
	befPW = request.form['befPW']
	newPW = request.form['newPW']
	
	account_row = db_session.query(Account).filter_by(accountId=accountId).filter_by(isValid=1)\
					.with_entities(Account, func.password(befPW), func.password(newPW)).first()

	account = None
	if account_row:
		account, pw, nPW = account_row

	result = dict()
	if(account):
		print pw, account.password, nPW
		if len(befPW)>0 and pw != account.password :
			return jsonify({ "code": 302, "result": "Wrong password" })

		update_result = db_session.query(Account).filter_by(accountId=accountId)\
						.filter(Account.isValid>0).update({'password': nPW})
		try:
			db_session.commit()
		except exc.IntegrityError as e:
			db_session.rollback()
			return jsonify({ "code": 400, "result": "DB Error" })

		if(update_result==0):
			result = { "code": 401, "result": "No affected rows" }
		else:
			result = { "code": 200, "result": "Success" }	
	else :
		result["code"] = 301
		result["result"] = "No Such User"

	return jsonify(result)
コード例 #3
0
ファイル: api.py プロジェクト: Rastii/wcsc_website
  def post(self):
    parser = reqparse.RequestParser()
    parser.add_argument('title', type=str, required=True)
    parser.add_argument('content', type=str, required=True)
    parser.add_argument('labels', type=int, required=False, action="append")
    args = parser.parse_args()
    labels = []
    try:
      #Checks for duplicate
      if db_session.query(Blog).filter(Blog.title.ilike("%"+args.title+"%"))\
                   .first() is not None:
        return self.response.warning(\
          self.response.WARNINGS['duplicate'](args.title), None)
      #Check of the labels exist
      for label in args.labels:
        label_instance = db_session.query(BlogLabel).get(label)
        if label_instance is None:
          return self.response.warning("Label with id %d does not exist." % label, 
                                       None)
        labels.append(label_instance)

      blog = Blog(title=args.title,
                  author_id=1, #TODO: Change this to user's current session
                  content=args.content)
      #Now append the labels to the blog
      for label_instance in labels:
        blog.labels.append(label_instance) 
      db_session.add(blog)
      db_session.commit()
      return self.response.success(None)
    except exc.SQLAlchemyError:
      return self.response.error('Error creating new blog', 
                                          self.response.ERROR_SQLALCHEMY)
コード例 #4
0
    def mutate(self, info, group_id, user_id, id_from_token):
        group_id = int(group_id)
        user_id = int(user_id)
        group = db.query(Group).filter_by(id=group_id).first()
        if group is None:
            raise Exception("No group with this ID found!")
        admin_role = db.query(GroupUser.role_in_group).filter_by(
            user_id=group.admin_id, group_id=group_id).first()
        user_role = db.query(GroupUser.role_in_group).filter_by(
            user_id=id_from_token, group_id=group_id).first()
        if admin_role.role_in_group == RoleEnum.ORGANIZER:
            if user_role is not None and user_role.role_in_group == RoleEnum.ORGANIZER:
                try:
                    db.add(
                        GroupUser(group_id=group_id,
                                  user_id=user_id,
                                  role_in_group=RoleEnum.ORGANIZER))
                    commit_with_check(db)
                except:
                    db.rollback()
                return AddOrganizer(ok=True, message="Users have been added!")

        return AddOrganizer(
            ok=True,
            message="Only admin with role ORGANIZER can add ORGANIZER!")
コード例 #5
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def getTopUserList():

	companyId = request.form.get("companyId") and request.form.get("companyId") or session.get("companyId")
	groupId = request.form.get("groupId")

	condFilter = [1==1]
	if companyId:
		condFilter.append(PointTotal.companyId==companyId)
	else :
		return jsonify({"code":400, "result":"no company id"})
	
	if groupId:
		condFilter.append(PointTotal.groupId==groupId)

	cnt = db_session.query(func.count())\
				.filter(*condFilter)\
				.first()[0]
	halfCnt = math.ceil(cnt * 0.5)

	result_rows = db_session.query(PointTotal, User.name)\
			.join(User, PointTotal.userId==User.userId)\
			.filter(*condFilter)\
			.order_by(PointTotal.pointTotal.desc()).limit(halfCnt)
	
	result = { "code":200, "entries": list() }
	rank = 1
	for row, name  in result_rows :
		rowJSON = row.tojson()
		rowJSON["name"] = name
		rowJSON["rank"] = rank
		result["entries"].append(rowJSON)
		rank += 1

	return jsonify(result)
コード例 #6
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
    async def resolve_search(parent, info, search_text, id_from_token):
        string_list = search_text.split(" ")
        items = list()
        wishlists = list()
        users = list()
        for i in string_list:
            temp = db.query(UserDB).filter_by(nickname=i).first()
            if temp is not None:
                users.append(temp)
            temp = db.query(UserDB).filter_by(user_name=i).first()
            if temp is not None:
                users.append(temp)
            temp = db.query(UserDB).filter_by(surname=i).first()
            if temp is not None:
                users.append(temp)

            temp = db.query(WishlistDB).filter_by(title=i,
                                                  access_level='ALL').all()
            if len(temp) != 0:
                for j in temp:
                    items.append(j)
            temp = db.query(ItemDB).filter_by(title=i,
                                              access_level='ALL').all()
            if len(temp) != 0:
                for j in temp:
                    items.append(j)
        return items + wishlists + users
コード例 #7
0
ファイル: views.py プロジェクト: abrahamlartey/375-AgQuery
def index():
    """
	Handles requests to the main page of the website

	This function handles all of the requests to the default page it takes 
	no parameters, but relies on the request.form global for the flask
	session to populate the indicators for the selected category

	:returns: HTML file representing the index page
	"""

    # the list of selectable indicators
    indicators = db_session.query(IndCons.indicator, IndCons.hexid).all()
    # sort the list of indicators alphabetically
    # Get a list of all of the geography/year combos in the db
    db_geo = db_session.query(Estimates.geography, Estimates.year).distinct()
    # Create a dict to store each geo and the years available for that geo
    geos = {}
    # place the years into different geographies
    for g in db_geo:
        if g.geography in geos.keys():
            geos[g.geography].append(g.year)
        else:
            geos[g.geography] = [g.year]

    # Sort the lists of years before displaying them
    for g in geos.keys():
        geos[g].sort()

    return render_template("index.html", indicators=indicators, geoyears=geos)
コード例 #8
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def putPointFunc(userId, point, where, why):
	#이벤트 체크 - 이벤트 당첨자(=해당 날)이면 point 2배
	if amIinEvent(userId) == True :
		point = point * 2

	insert_row = PointHistory(userId, point, where, why)
	db_session.add(insert_row)

	if where.startswith("Praise"):
		myPoint_update_result = db_session.query(PointTotal).filter_by(userId=userId)\
			.update({PointTotal.pointTotal: PointTotal.pointTotal + point, PointTotal.pointPraise: PointTotal.pointPraise + point})
	elif where.startswith("Thanks"):
		myPoint_update_result = db_session.query(PointTotal).filter_by(userId=userId)\
			.update({PointTotal.pointTotal: PointTotal.pointTotal + point, PointTotal.pointThanks: PointTotal.pointThanks + point})
	elif where.startswith("Good") :
		myPoint_update_result = db_session.query(PointTotal).filter_by(userId=userId)\
			.update({PointTotal.pointTotal: PointTotal.pointTotal + point, PointTotal.pointGood: PointTotal.pointGood + point})
	else :
		myPoint_update_result = False

	if not (myPoint_update_result > 0) : #insert when no row
		insert_row2 = PointTotal(userId, request.form['companyId'], request.form['groupId'], point, where)
		db_session.add(insert_row2)

	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()

	if(insert_row.id==None or (not (myPoint_update_result > 0) )): # and insert_row2.inserted_primary_key==None)):
		return False
	else:
		return { "pointId" : insert_row.id, "point" : point }
コード例 #9
0
 def mutate(self, info, item_id, id_from_token):
     item = db.query(Item).filter_by(id=item_id).first()
     if item is None:
         raise Exception("No item was found with this ID!")
     if item.giver_id is not None:
         return SetGiverId(ok=False,
                           message="This item has already reserved!")
     if item.status == StatusEnum.PERFORMED:
         raise Exception("This item is already performed!")
     if item.status == StatusEnum.RESERVED:
         if item.giver_id == id_from_token:
             # cancel reservation by giver_id user
             item.giver_id = None
             commit_with_check(db)
             user = db.query(User).filter_by(id=item.owner_id).first()
             return SetGiverId(ok=True,
                               message="Reserving of item is canceled!!",
                               user_=user)
         else:
             raise Exception("This item is already reserved!")
     item.giver_id = id_from_token
     item.status = StatusEnum.RESERVED
     commit_with_check(db)
     user = db.query(User).filter_by(id=item.owner_id).first()
     return SetGiverId(ok=True, message="Item was reserved!!", user_=user)
コード例 #10
0
 def get_rc_children_meta(parent_id):
     rc = (db_session.query(ResourceCertificate).filter(
         ResourceCertificate.parent_id == parent_id).all())
     roas = db_session.query(Roa).filter(Roa.parent_id == parent_id).all()
     f = {"parent": parent_id, "data": []}
     for c in rc:
         c = c.asdict()
         d = {
             "id": c["id"],
             "value": c["certificate_name"],
             "webix_kids": c["has_kids"],
             "mft_name": c["manifest"],
             "crl_name": c["crl"],
             "icon": c["validation_status"].lower(),
         }
         f["data"].append(d)
     for roa in roas:
         roa = roa.asdict()
         d = {
             "id": roa["id"],
             "value": roa["roa_name"],
             "webix_kids": False,
             "icon": roa["validation_status"].lower(),
         }
         f["data"].append(d)
     return jsonify(f)
コード例 #11
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def downloadSurvey():
	if not session.get("companyId") and session.get("level")==2:
		db_result = db_session.query(User, Answer)\
						.join(Answer, Answer.userId==User.userId)\
						.all()
	elif session.get("companyId"):
		db_result = db_session.query(User, Answer)\
						.join(Answer, Answer.userId==User.userId)\
						.filter(User.companyId==session["companyId"])\
						.all()
		# query_sets = Answer.query.join.limit(5).all()
		# column_names = ['answerId']
		# return excel.make_response_from_query_sets(query_sets, column_names, "xls")		
	else:
		abort(401)

	records = list()
	userKeys = User.__table__.columns.keys()
	answerKeys = Answer.__table__.columns.keys()
	for row1, row2 in db_result:
		od = OrderedDict()

		rowJSON1 = row1.tojson()
		for k in userKeys:
			od[k] = rowJSON1[k]

		rowJSON2 = row2.tojson()
		for k in answerKeys:
			od[k] = rowJSON2[k]	

		records.append(od)

	return excel.make_response_from_records(records, "xls") #여기서 컬럼순서가 망가진다...
コード例 #12
0
 def get(self):
     amount = current_app.config['CATCHAT_MESSAGE_PER_PAGE']
     messages = db_session.query(Message).order_by(
         Message.timestamp.asc())[-amount:]
     user_amount = db_session.query(User).count()
     return render_template('chat/home.html',
                            messages=messages,
                            user_amount=user_amount)
コード例 #13
0
 def resolve_lists(parent, info, id_from_token):
     results = db.query(GroupListModel).filter_by(group_id=parent.id).all()
     if parent.access_level == GroupAccessEnum.OPEN:
         return results
     user = db.query(GroupUserModel).filter_by(user_id=id_from_token, group_id=parent.id).first()
     if parent.access_level == GroupAccessEnum.CLOSE and user is not None:
         return results
     return []
コード例 #14
0
 def resolve_items(parent, info, id_from_token):
     if parent.access_level == AccessLevelEnum.ALL:
         return db.query(ItemModel).filter_by(list_id=parent.id).all()
     if parent.access_level == AccessLevelEnum.NOBODY and parent.user_id == id_from_token:
         return db.query(ItemModel).filter_by(list_id=parent.id).all()
     if parent.access_level == AccessLevelEnum.FRIENDS and db.query(FriendShipModel).filter_by(user_id_1=parent.user_id,
                                                                          user_id_2=id_from_token).first():
         return db.query(ItemModel).filter_by(list_id=parent.id, access_level=AccessLevelEnum.FRIENDS).all()
     return []
コード例 #15
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
 async def resolve_group(parent, info, group_id, id_from_token):
     group = db.query(GroupDB).filter_by(id=group_id).first()
     if group.access_level == GroupAccessEnum.OPEN:
         return group
     user_group = db.query(GroupUserDB).filter_by(
         user_id=id_from_token, group_id=group_id).first()
     if group.access_level == GroupAccessEnum.CLOSE and user_group is not None:
         return group
     raise Exception("Access denied!")
コード例 #16
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def listGoodPost(one=False):
	userId = request.form['userId']
	companyId = request.form['companyId']
	groupId = request.form['groupId']
	listType = request.form.get("listType")
	page = request.form.get("page")
	if page==None: page = 1
	else: page = int(page)
	pageCnt = 10

	condFilter = [1==1]
	if listType=='my':
		condFilter.append(GoodPost.userId==userId)
	elif one==True:
		pageCnt = 1
		if request.form.get('postId') :
			condFilter.append(GoodPost.postId==request.form.get('postId'))

	likeCnt_query = db_session.query(GoodLike.postId, func.count().label('likeCnt') ).group_by(GoodLike.postId).subquery('likeCnt_query')
	replyCnt_query = db_session.query(GoodReply.postId, func.count().label('replyCnt') ).filter_by(isValid=1).group_by(GoodReply.postId).subquery('replyCnt_query')

	result_rows = db_session.query( GoodPost, User.name, User.thumbURL, User.jobTitle, Group.name, func.COALESCE(likeCnt_query.c.likeCnt,0), func.COALESCE(replyCnt_query.c.replyCnt,0) )\
					.join(User, GoodPost.userId==User.userId)\
					.join(Group, GoodPost.groupId==Group.groupId)\
					.outerjoin(likeCnt_query, GoodPost.postId==likeCnt_query.c.postId)\
					.outerjoin(replyCnt_query, GoodPost.postId==replyCnt_query.c.postId)\
					.filter(GoodPost.isValid==1).filter(GoodPost.companyId==companyId)\
					.filter(*condFilter)\
					.group_by(GoodPost.postId)\
					.order_by(GoodPost.postId.desc())[ (page-1)*pageCnt : page*pageCnt ]
					#.filter_by(groupId=groupId)
	
	result = { "code": 200, "posts": list(), "page": page }
	for postRow, userName, thumbURL, jobTitle, groupName, likeCnt, replyCnt in result_rows :
		rdateStr = postRow.rdate.strftime('%y/%m/%d %H:%I')
		rowJSON = postRow.tojson()
		rowJSON["rdate"] = rdateStr

		if postRow.isHidden==1 :
			rowJSON["userName"] = "******"
			rowJSON["thumbURL"] = ""
			rowJSON["jobTitle"] = "○○"
			rowJSON["groupName"] = "○○○○○"
		else :
			rowJSON["userName"] = userName
			rowJSON["thumbURL"] = thumbURL
			rowJSON["jobTitle"] = jobTitle
			rowJSON["groupName"] = groupName
		
		rowJSON["likeCnt"] = likeCnt
		rowJSON["replyCnt"] = replyCnt #cause of doubled count problem
		result["posts"].append(rowJSON)

	if one==True:
		return result["posts"] and result["posts"][0] or None
 	return jsonify(result)
コード例 #17
0
def get_device_location(mac_address, use_asynchronous_data=False):
    items = get_devices_and_users(mac_address=mac_address)
    registered_users = items['registered_users']
    unknown_devices = items['unknown_devices']
    if len(registered_users) == len(unknown_devices) == 0:
        try:
            location_api_extractor = get_location_api_extractor()
            if location_api_extractor:
                info = location_api_extractor.get_client_information(
                    mac_address)

                if info:
                    item = {}
                    location_info = None

                    if location_api_extractor.deployment_type == 'On-premises':
                        if 'mapHierarchyString' in info['mapInfo']:
                            hierarchy = info['mapInfo']['mapHierarchyString']
                            coord_x = info['mapCoordinate']['x']
                            coord_y = info['mapCoordinate']['y']
                            last_modified = info['statistics'][
                                'lastLocatedTime']
                            location_info = __serialize_location_information(
                                coord_x, coord_y, hierarchy, last_modified,
                                'static')

                    elif location_api_extractor.deployment_type == 'Cloud' and location_api_extractor.demo:
                        floor_name = info['floors']
                        floor = db_session.query(Floor).filter(
                            Floor.name == floor_name).first()
                        if floor:
                            floor_hierarchy = floor.get_hierarchy()
                            x, y = __calculate_x_y_coordinates(
                                floor, info['lat'], info['lng'])

                            location_info = __serialize_location_information(
                                x, y, floor_hierarchy, info['seenString'],
                                'demo')

                    user = db_session.query(RegisteredUser).filter(
                        RegisteredUser.mac_address == mac_address).first()
                    if user:
                        item['user_info'] = __serialize_user_information(
                            user.name, user.phone, user.id)
                        registered_users.append(item)
                    else:
                        unknown_devices.append(item)
                    item['location'] = location_info
            else:
                raise Exception("No server has been setup")

        except:
            traceback.print_exc()
            pass

    return items
コード例 #18
0
 def resolve_groups(parent, info, id_from_token):
     group_user = db.query(GroupUserModel).filter_by(user_id=parent.id).all()
     if id_from_token == parent.id:
         return group_user
     response = list()
     for i in group_user:
         group = db.query(GroupModel).filter_by(id=i.group_id).first()
         if group.access_level == GroupAccessEnum.OPEN:
             response.append(group)
     return response
コード例 #19
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def ranking():
	userId = request.form['userId']
	companyId = request.form.get("companyId")
	groupId = request.form.get("groupId")
	page = request.form.get("page")
	# if page==None: page = 1
	# else: page = int(page)
	# pageCnt = 10

	if request.form.get("rankType"):
		if request.form["rankType"]=='thanks':
			orderCol = PointTotal.pointThanks
		elif request.form["rankType"]=='priase':
			orderCol = PointTotal.pointPraise
		elif request.form["rankType"]=='good':
			orderCol = PointTotal.pointGood
		else :
			orderCol = PointTotal.pointTotal
	else :
		orderCol = PointTotal.pointTotal

	if companyId!=None:
		if groupId!=None:
			result_rows = db_session.query(PointTotal, Group.name).join(Group, PointTotal.groupId==Group.groupId)\
							.filter(PointTotal.companyId==companyId).filter(PointTotal.groupId==groupId)\
							.order_by(orderCol.desc())[0:10]
			# PointTotal.query.filter_by(companyId=companyId).filter_by(groupId=groupId).order_by(PointTotal.pointTotal.desc())[ (page-1)*pageCnt : page*pageCnt ]
		else:
			result_rows = db_session.query(PointTotal, Group.name).join(Group, PointTotal.groupId==Group.groupId)\
							.filter(PointTotal.companyId==companyId)\
							.order_by(orderCol.desc())[0:10]
							# [ (page-1)*pageCnt : page*pageCnt ]

	result = { "code": 200, "ranking": list(), "page": page, "rankType": request.form.get("rankType") }
	
	rank = 1
	for row, groupName in result_rows :
		rowJSON = row.tojson()
		rowJSON["userName"] = row.mate.name
		rowJSON["jobTitle"] = row.mate.jobTitle
		rowJSON["thumbURL"] = row.mate.thumbURL
		rowJSON["groupName"] = groupName
		rowJSON["rank"] = rank

		# if str(rowJSON["userId"]) == userId :
		# 	result.update({"myRank": rank, "myPoint": row.pointTotal, 
		# 		"myPointP": row.pointPraise, "myPointT": row.pointThanks, "myPointG": row.pointGood 
		# 		})	

		result["ranking"].append(rowJSON)
		rank = rank + 1

	# result["totalCnt"] = len(result["ranking"])

	return jsonify(result)
コード例 #20
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
 async def resolve_wishlist(parent, info, list_id, id_from_token):
     wishlist = db.query(WishlistDB).filter_by(id=int(list_id)).first()
     if wishlist.access_level == AccessLevelEnum.ALL:
         return wishlist
     if wishlist.access_level == AccessLevelEnum.NOBODY and wishlist.user_id == id_from_token:
         return wishlist
     if wishlist.access_level == AccessLevelEnum.FRIENDS and db.query(
             FSDB).filter_by(user_id_1=wishlist.user_id,
                             user_id_2=id_from_token).first():
         return wishlist
     raise Exception("Access denied!")
コード例 #21
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
 async def resolve_item(parent, info, item_id, id_from_token):
     item = db.query(ItemDB).filter_by(id=int(item_id)).first()
     if item.access_level == AccessLevelEnum.ALL:
         return item
     if item.access_level == AccessLevelEnum.NOBODY and item.owner_id == id_from_token:
         return item
     if item.access_level == AccessLevelEnum.FRIENDS and db.query(
             FSDB).filter_by(user_id_1=item.owner_id,
                             user_id_2=id_from_token).first():
         return item
     raise Exception("Access denied!")
コード例 #22
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
 async def resolve_index(parent, info):
     wishlists = db.query(WishlistDB) \
         .join(WishlistDB.user_owner) \
         .join(UserDB.friends) \
         .filter(WishlistDB.access_level == 'ALL') \
         .all()
     items = db.query(ItemDB) \
         .join(ItemDB.owner) \
         .join(UserDB.friends) \
         .filter(ItemDB.access_level == 'ALL') \
         .all()
     return items + wishlists
コード例 #23
0
def before_first_request():
    print("FIRST REQUEST RECEIVED")
    try:
        db_session.query(CMXServer).first()
    except ProgrammingError as e:
        if str(e).__contains__("does not exist"):
            # DB Tables have not been created
            invoke_db_migration()
        else:
            # Unknown error
            raise Exception(e)
    except Exception as e:
        traceback.print_exc()
コード例 #24
0
ファイル: queries.py プロジェクト: johuex/wishlist_GQL
 async def resolve_news(parent, info, id_from_token):
     wishlists = db.query(WishlistDB)\
         .join(WishlistDB.user_owner)\
         .join(UserDB.friends)\
         .filter(and_(UserDB.id == id_from_token, or_((WishlistDB.access_level == 'ALL'), (WishlistDB.access_level == 'FRIENDS'))))\
         .all()
     items = db.query(ItemDB)\
         .join(ItemDB.owner)\
         .join(UserDB.friends) \
         .filter(and_(UserDB.id == id_from_token,
                      or_((ItemDB.access_level == 'ALL'), (ItemDB.access_level == 'FRIENDS'))))\
         .all()
     return items + wishlists
コード例 #25
0
def delete(server_id):
    output = None
    try:
        server = db_session.query(MerakiServer).filter(MerakiServer.id == server_id).first()
        if request.method == 'GET':
            output = render_template("server/meraki_server/delete.html", object=server, deployment="Cloud")
        else:
            server = db_session.query(MerakiServer).filter(MerakiServer.id == request.form["meraki_server_id"]).delete()
            output = redirect(url_for('mod_meraki_server.show'))
    except:
        traceback.print_exc()
        output = redirect(url_for('error'))
        db_session.rollback()

    return output
コード例 #26
0
ファイル: list_mutations.py プロジェクト: johuex/wishlist_GQL
 def mutate(self, info, list_id, items_id, id_from_token):
     wlist = db.query(Wishlist).filter_by(id=list_id).first()
     if wlist is None:
         raise Exception("No wishlist with this ID found!")
     if wlist.user_id != id_from_token:
         return AddItemsToList(ok=False, message="Access denied!")
     for item_id in items_id:
         item = db.query(Item).filter_by(id=item_id).first()
         if item.status == StatusEnum.RESERVED or \
            item.status == StatusEnum.PERFORMED or item.owner_id != id_from_token:
             continue
         item.list_id = list_id
         item.access_level = wlist.access_level
         commit_with_check(db)
     return AddItemsToList(ok=True, message="Items were added to wishlist!")
コード例 #27
0
def verticalization_remove(server_id):
    output = {
        'error': None,
        'error_message': None,
        'redirect_url': None,
    }
    try:
        form_json = request.json
        location_system = db_session.query(LocationSystem).filter(
            LocationSystem.id == server_id).first()
        campi = location_system.campuses
        for campus in campi:
            campus.vertical_name = None
            for building in campus.buildings:
                building.vertical_name = None
                for floor in building.floors:
                    floor.vertical_name = None
                    for zone in floor.zones:
                        zone.vertical_name = None
                        zone.max_occupation = -1
        db_session.commit()
        output['redirect_url'] = url_for('mod_cmx_server.details',
                                         server_id=server_id)
    except Exception as e:
        output['error'] = True
        output['error_message'] = str(e)
        traceback.print_exc()
        db_session.rollback()

    output = Response(json.dumps(output), mimetype='application/json')
    return output
コード例 #28
0
def engagement_screen_dwell_select():
    if request.method == 'GET':
        floors = db_session.query(Floor).all()
        output = render_template("engagement/screen/engagement_select.html", floors=floors)
    else:
        output = redirect(url_for('.engagement_screen_dwell_show', hierarchy=request.form['hierarchy']))
    return output
コード例 #29
0
def show():
    try:
        servers = db_session.query(MerakiServer).all()
        return render_template("server/meraki_server/list.html", object=servers, deployment="Cloud")
    except:
        traceback.print_exc()
        return "No response"
コード例 #30
0
 def mutate(self, info, to_user_id, id_from_token):
     if db.query(FS).filter_by(user_id_1=id_from_token,
                               user_id_2=to_user_id).first() is not None:
         SendFriendRequest(ok=False, message="You are already friends!")
     if db.query(FR).filter_by(user_id_from=id_from_token,
                               user_id_to=to_user_id).first() is not None:
         SendFriendRequest(
             ok=False,
             message="You have already sent friend request to this user!")
     try:
         db.add(FR(user_id_from=id_from_token, user_id_to=to_user_id))
         commit_with_check(db)
     except:
         db.rollback()
     return SendFriendRequest(ok=True,
                              message="Friend request has been sent!")
コード例 #31
0
def command_list(message_text, room_id, person_id):
    second_word = __replace_string_case_insensitive(message_text, 'list',
                                                    '').strip().lower()
    post_markdown = None
    post_text = None

    if second_word in ['users', 'user', 'asset', 'assets']:
        users = db_session.query(RegisteredUser).all()

        post_text = '{} items were found:'.format(len(users))
        post_markdown = "# {}\n".format(post_text)

        user_names = []
        for user in users:
            user_names.append(user.name)
            post_markdown += '{}. {} ({})\n'.format(len(user_names), user.name,
                                                    user.mac_address)

        post_text += ' {}'.format(user_names)
    elif second_word in ['device', 'devices']:

        overview = get_devices_divided_by_hierarchy()
        """

        post_text = '{} items were found:'.format(len(users))
        post_markdown = "# {}\n".format(post_text)

        user_names = []
        for user in users:
            user_names.append(user.name)
            post_markdown += '{}. {} ({})\n'.format(len(user_names), user.name, user.mac_address)

        post_text += ' {}'.format(user_names)
        """

        count = 0

        for hierarchy in overview:
            count += len(hierarchy["unknown_devices"])

        # this line below takes the first device of each hierarchy and adds to the list
        devices = [
            item["unknown_devices"][0]['mac_address'] for item in overview
        ]

        post_text = "{} unknown devices and were found. Here's a sample:".format(
            count)
        post_markdown = "# {}\n".format(post_text)

        for i in range(len(devices)):
            post_markdown += '{}. {}\n'.format(i, devices[i])

        post_text += ' {}'.format(devices)

    else:
        post_text = 'Invalid list command. Try list users/assets or list devices'
    print('Posting on Spark... {}'.format(post_text))
    write_to_spark(room_id, None, None, post_text, post_markdown, None)

    return post_text
コード例 #32
0
ファイル: list_mutations.py プロジェクト: johuex/wishlist_GQL
 def mutate(self, info, list_id, items_id, id_from_token):
     wlist = db.query(Wishlist).filter_by(id=list_id).first()
     if wlist is None:
         raise Exception("No wishlist with this ID found!")
     if wlist.user_id != id_from_token:
         return DeleteItemsFromList(ok=False, message="Access denied!")
     for item_id in items_id:
         item = db.query(Item).filter_by(id=item_id).first()
         item.list_id = None
         item.access_level = AccessLevelEnum.NOBODY
         commit_with_check(db)
     return DeleteItemsFromList(
         ok=True,
         message=
         "Items were deleted from wishlist and were pasted to default wishlist!"
     )
コード例 #33
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
	def user_init_func(row):

		if len(row['name'])==0: return None

		group_row = db_session.query(Group.groupId).filter(Group.companyId==companyId).filter(Group.name==row['groupName']).first()
		if group_row:
			groupId = group_row[0]
		elif len(row['groupName']) > 0 :
			newGroup = Group(companyId, row['groupName'])
			db_session.add(newGroup)
			try:
				db_session.commit()
			except exc.IntegrityError as e:
				db_session.rollback()

			if(newGroup.groupId==None):
				return None
			else:
				groupId = newGroup.groupId
		else :
			groupId = None

		# companyId, jobClass, groupId, email, accessKey, name, gender, birth, jobType, workYear, workMonth, jobTitle, jobTitleNo
		u = User(companyId, jobClass, groupId, row['email'], row['accessKey'], row['name'], row['gender'], row['birth'], row['jobType'], row['workYear'], row['workMonth'], row['jobTitle'], row['jobTitleNo'])
		return u
コード例 #34
0
 def resolve_items_owner(parent, info, id_from_token):
     response = list()
     items = db.query(ItemModel).filter_by(owner_id=parent.id, list_id=None, status=StatusEnum.FREE).all()
     if len(items) == 0:
         return items
     for item in items:
         if item.access_level == AccessLevelEnum.ALL:
             response.append(item)
         if item.access_level == AccessLevelEnum.NOBODY and item.owner_id == id_from_token:
             response.append(item)
         if item.access_level == AccessLevelEnum.FRIENDS and db.query(FriendShipModel).filter_by(user_id_1=item.owner_id,
                                                                    user_id_2=id_from_token).first():
             response.append(item)
     if len(response) > 0:
         return response
     return []
コード例 #35
0
ファイル: models.py プロジェクト: nelsontran/lilytask
    def get_user(email):
        user = db_session.query(User) \
                         .select_from(User) \
                         .filter(User.email == email) \
                         .first()

        return user
コード例 #36
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def confirmMsg():
	msgId = request.form['msgId']
	msgType = request.form['msgType']
	userId = request.form['userId']

	update_result = db_session.query(Message).filter_by(id=msgId).filter_by(rUserId=userId).filter_by(msgType=msgType).filter_by(isRead=0)\
					.update({'isRead': 1, 'readTime': datetime.now()})
	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()

	if(update_result==None):
		result = { "code": 400, "result": "DB Error" }
	elif(update_result==0):
		result = { "code": 401, "result": "No affected rows" }
	else:
		result = { "code": 200, "result": "Success" }

		# 포인트 적립
		msgTypeStr = params["msgType"]=='1' and 'PraiseRcv' or 'ThanksRcv'
		point_result = putPointFunc(request.form['userId'], 200, msgTypeStr, msgId)
		if point_result!=False :
			result["pointId"] = point_result["pointId"]
			result["point"] = point_result["point"]

	return jsonify(result)
コード例 #37
0
 def mutate(self, info, files, item_id, id_from_token):
     item = db.query(Item).filter_by(id=item_id).first()
     if item is None:
         raise Exception("No item was found with this ID!")
     if item.owner_id != id_from_token:
         return AddPictures(ok=False, message="Access denied!")
     # TODO maybe change names for pictures?
     i = 0
     for pic in files:
         if check_format(pic):
             i += 1
             name = 'items/item_' + str(item.id) + '_' + str(i)
             if upload_file(pic, Config.bucket, name):
                 try:
                     db.add(
                         ItemPicture(item_id=item.id, path_to_picture=name))
                     commit_with_check(db)
                 except:
                     db.rollback()
             else:
                 return AddPictures(
                     ok=False, message="Pictures haven't been uploaded!")
         else:
             return AddPictures(
                 ok=False,
                 message=
                 "Only pictures (.png, .jpeg, .bmp) can be downloaded!")
     return AddPictures(ok=True, messages="Pictures have been uploaded!")
コード例 #38
0
def get_amount_by_user(username):
    transactions = db_session.query(PaymentTransaction).filter_by(username=username).all()
    amounts = 0
    for transaction in transactions:
        amounts = amounts + int(transaction.amount)

    return str(amounts)
コード例 #39
0
ファイル: views.py プロジェクト: DartVadius/MyPy
def kill():
    if request.method == "POST":
        book_id = request.json
        book = db_session.query(Book).filter_by(id=book_id).first()
        db_session.delete(book)
        db_session.commit()
        return redirect(url_for('odminko'))
コード例 #40
0
ファイル: views.py プロジェクト: jreed1701/ExampleBackEndApp
def add_example(new):

    print('New is: %s' % new)

    if db_session.query(ExampleModel.id).filter_by(id=new).scalar() is None:

        ex = ExampleModel()

        ex.id = new
        ex.field1 = 'ExampleString'

        db_session.add(ex)
        db_session.commit()

        #return url_for('app.get_example', variable=new)

        body = 'Success!'
        response = jsonify(body)
        response.status_code = 201

        return response

    else:

        body = 'That example record already exists'

        response = jsonify(body)
        response.status_code = 404

        return response
コード例 #41
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def sendMsgList():
	userId = request.form['userId']
	msgType = request.form['msgType']
	page = request.form.get("page")
	if page==None: page = 1
	else: page = int(page)
	pageCnt = 10

	# result_rows = Message.query.filter_by(sUserId=userId).filter_by(msgType=msgType).order_by(Message.id.desc())[ (page-1)*pageCnt : page*pageCnt ]
	result_rows = db_session.query(Message, User.name, User.thumbURL, User.jobTitle, Group.name)\
				.join(User, Message.rUserId==User.userId)\
				.join(Group, Message.groupId==Group.groupId)\
				.filter(Message.sUserId==userId).filter(Message.msgType==msgType)\
				.order_by(Message.id.desc())[ (page-1)*pageCnt : page*pageCnt ]

	result = { "code": 200, "msgs": list(), "page": page }
	for row, userName, thumbURL, jobTitle, groupName in result_rows :
		rdateStr = row.rdate.strftime('%y/%m/%d %H:%I')
		rowJSON = row.tojson()
		rowJSON["rdate"] = rdateStr

		rowJSON["userName"] = userName
		rowJSON["thumbURL"] = thumbURL
		rowJSON["jobTitle"] = jobTitle
		rowJSON["groupName"] = groupName
		result["msgs"].append(rowJSON)

	return jsonify(result)
コード例 #42
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def cmsReportIndex(userKey):
	des = AESCipher('kit-works-lnp')
	try:
		decKey = urllib.unquote(userKey)
		userId = des.decrypt(userKey)
		try:
		   userId = int(userId)
		except ValueError:
		   abort(403) #not allowed
	except:
		return "Not allowed access"
	row, groupName, endDate = db_session.query(User, Group.name, Company.func_100days_edate)\
					.join(Group, Group.groupId==User.groupId)\
					.join(Company, Company.companyId==User.companyId)\
					.filter(User.userId==userId).first()
	if not row:
		abort(401)
	userData = { "userId":userId, "companyId":row.companyId, "groupId":row.groupId, "name":row.name, "jobTitle":row.jobTitle, "email":row.email, "groupName":groupName, "birth":str(row.birth)[0:7], "workYear":row.workYear, "workMonth":row.workMonth }
	userData["jobType"] = row.jobType=='reg' and '정규직' or '비정규직'
	userData["endDate"] = endDate.strftime("%Y-%m-%d")

	activities = getActivityCnts(row.companyId, userId)

	surveyPoints = getSurveyPoints(userId)

	return render_template('cms_report.html', key=userKey, user=userData, data=activities, survey=surveyPoints)
コード例 #43
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def setPushToken():
	userId = request.form['userId']
	pushTokenStr = request.form['pushToken']
	os = request.form['os']

	update_result = db_session.query(PushToken).filter_by(userId=userId).update({'pushToken': pushTokenStr, 'os' : os})
	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()

	if(update_result==None):
		result = { "code": 400, "result": "DB Error" }
	elif(update_result==0):
		pushToken = PushToken(userId, pushTokenStr, os)
		db_session.add(pushToken)
		try:
			db_session.commit()
		except exc.IntegrityError as e:
			db_session.rollback()

		result = { "code": 201, "result": "Success to insert" }
	else:
		result = { "code": 200, "result": "Success to update" }
	return jsonify(result)
コード例 #44
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def cmsLogin():
	if request.method == 'GET':
		return render_template('cmsLogin.html')
	else :
		email = request.form['email']
		pwInput = request.form['password']

		db_result = db_session.query(Account, Company.name, Company.thumbURL, func.password(pwInput))\
					.outerjoin(Company, Company.companyId==Account.companyId)\
					.filter(Account.email==email).first()
		account, companyName, companyLogo, pwInputEnc = db_result

		if account :
			if pwInputEnc==account.password :
				errMsg = None
			else :
				errMsg = "비밀번호가 맞지 않습니다."
		else :
			errMsg = "허용되지 않는 계정입니다."

		if errMsg!=None:
			return render_template('cmsLogin.html', email=email, errMsg=errMsg)
	
		session['logged_in'] = True
		session['accountId'] = account.accountId
		session['email'] = email
		session['level'] = account.level
		session['companyId'] = account.companyId
		session['companyName'] = companyName
		session['companyLogo'] = companyLogo

		if account.level==2:
			return redirect(url_for('cmsSuperIndex'))
		else:
			return redirect(url_for('cmsIndex'))
コード例 #45
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def amIinEvent(userId):
	if str(userId)=='10004': return True

	todayDate = datetime.today().strftime("%Y-%m-%d")
	event_result = db_session.query(EventDouble).filter_by(userId=userId).filter_by(eventDate=todayDate).count()
	if event_result > 0 :
		return True
	return False
コード例 #46
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def homeData():
	userId = request.form['userId']
	groupId = request.form['groupId']
	companyId = request.form['companyId']

	today = datetime.today()
	todayDate = today.strftime("%Y-%m-%d")

	result = { "code" : 200 }

	# 내 포인트
	result["myPointTotal"] = None
	point_result = db_session.query(PointTotal.pointTotal).filter(PointTotal.userId==userId).first()
	if point_result!=None :
		for point in point_result:
			result["myPointTotal"] = point

	# 내 랭킹, 총 회사인원수
	if result["myPointTotal"]!=None:	
		rank_result = PointTotal.query.filter(PointTotal.companyId==companyId)\
			.with_entities( func.count(), func.count( func.IF(PointTotal.pointTotal > result["myPointTotal"], 1, None) ) )
		for totalCnt, higherCnt in rank_result:
			result["totalCnt"] = totalCnt
			result["myRank"] = higherCnt!=None and higherCnt + 1 or None

	#이벤트 체크
	result["isEvent"] = amIinEvent(userId) 

	#오늘의 행복도
	result["todayHappiness"] = todayHappiness(True)

	# 수신 메시지(타입별) 총개수
	msgRcv_result = Message.query.filter_by(rUserId=userId)\
		.with_entities( func.count( func.IF(Message.msgType==1, 1, None) ), func.count( func.IF(Message.msgType==2, 1, None) ) )
	for cnt1, cnt2 in msgRcv_result :
		result["totalMsgRcv"] = { "praise": cnt1, "thanks": cnt2 }
	# 발신 메시지(타입별) 총개수
	msgSend_result = Message.query.filter_by(sUserId=userId)\
		.with_entities( func.count( func.IF(Message.msgType==1, 1, None) ), func.count( func.IF(Message.msgType==2, 1, None) ) )
	for cnt1, cnt2 in msgSend_result :
		result["totalMsgSend"] = { "praise": cnt1, "thanks": cnt2 }

	# 오늘 수신한 메시지(타입별) 개수
	todayMsgRcv_result = Message.query.filter_by(rUserId=userId).filter(Message.rdate >= todayDate)\
		.with_entities( func.count( func.IF(Message.msgType==1, 1, None) ), func.count( func.IF(Message.msgType==2, 1, None) ) )
	for cnt1, cnt2 in todayMsgRcv_result :
		result["todayMsgRcv"] = { "praise": cnt1, "thanks": cnt2 }

	#가장 최근 좋은일 게시물
	# result["goodpost"] = listGoodPost(True)

	#좋은일 게시물 오늘 총 갯수
	result["goodpost_todayCnt"] = GoodPost.query.filter(GoodPost.isValid>0).filter(GoodPost.rdate >= todayDate).count()

	return jsonify(result)
コード例 #47
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def getTopGroupList():

	companyId = request.form.get("companyId") and request.form.get("companyId") or session.get("companyId")

	cnt = db_session.query(func.count(distinct(PointTotal.groupId)))\
				.filter(PointTotal.companyId==companyId).first()[0]
	oneThirdCnt = math.ceil(cnt * 0.3)

	result_rows = db_session.query(PointTotal.companyId, PointTotal.groupId, Group.name, func.sum(PointTotal.pointTotal).label("totalPoint"), func.sum(PointTotal.pointPraise), func.sum(PointTotal.pointThanks), func.sum(PointTotal.pointGood) )\
			.join(Group, PointTotal.groupId==Group.groupId)\
			.group_by(PointTotal.groupId)\
			.filter(PointTotal.companyId==companyId)\
			.order_by("totalPoint DESC").limit(oneThirdCnt)
	
	result = { "entries": list() }
	rank = 1
	for companyId, groupId, name, pointTotal, pointPraise, pointThanks, pointGood  in result_rows :
		result["entries"].append({"rank":rank, "companyId":companyId, "groupId":groupId, "name":name, "totalPoint":int(pointTotal), "praisePoint":int(pointPraise), "thanksPoint":int(pointThanks), "goodPoint":int(pointGood) })
		rank += 1

	return jsonify(result)
コード例 #48
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def cmsIndex():
	if request.args.get("id"):
		session["companyId"] = request.args["id"]
		db_result = db_session.query(Company.name, Company.thumbURL).filter(Company.companyId==request.args["id"]).first()
		name, thumbURL = db_result
		session["companyName"] = name
		session["companyLogo"] = thumbURL

	if not session.get('companyId'):
		return "Not allowed access (No Company Info)"

	return render_template('cms_partner.html', data=session)
コード例 #49
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def sendMsg():
	params = dict()
	params["sUserId"] = request.form['userId']
	params["rUserId"] = request.form['rUserId']
	params["companyId"] = request.form['companyId']
	params["groupId"] = request.form['groupId']
	params["msgType"] = request.form['msgType'] # 1:칭찬, 2:감사
	params["msg"] = request.form['msg']

	#일일한도 체크
	todayCount = myTodayCounts(request.form['userId'], "Message");
	if params["msgType"]==1 and todayCount["Praise"] >= 3 :
		return jsonify({ "code": 310, "result": "Limit today's praise message" })
	elif params["msgType"]==2 and todayCount["Thanks"] >= 3 :
		return jsonify({ "code": 311, "result": "Limit today's thanks message" })

	message = Message(**params)
	db_session.add(message)
	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()
		return jsonify({ "code": 400, "result": "DB Error" })

	if(message.id==None):
		result = { "code": 400, "result": "DB Error" }
	else:
		result = { "code": 200, "result": "Success" }

		# 포인트 적립
		msgTypeStr = params["msgType"]=='1' and 'PraiseSend' or 'ThanksSend'
		point_result = putPointFunc(request.form['userId'], 100, msgTypeStr, message.id)
		if point_result!=False :
			result["pointId"] = point_result["pointId"]
			result["point"] = point_result["point"]

		# 상대방이 오늘 중 메시지 3번째 수신 확인 후, 그러면 푸쉬 보내기.
		today = datetime.today()
		todayDate = today.strftime("%Y-%m-%d")
		rUserTodayRcvCnt = db_session.query(Message).filter_by(rUserId=params["rUserId"]).filter_by(msgType=params["msgType"]).filter(Message.rdate > todayDate).count()
		if rUserTodayRcvCnt >= 3 :
			pushMsg = params["msgType"]=='1' and '칭찬 메시지가 왔습니다.' or '감사 메시지가 왔습니다.'
			push_result = sendPush(params["rUserId"], 11, '축하합니다! ' + pushMsg)
			result["push"] = push_result

		else : #보통 푸쉬.
			pushMsg = params["msgType"]=='1' and '칭찬 메시지가 왔습니다.' or '감사 메시지가 왔습니다.'
			push_result = sendPush(params["rUserId"], 1, pushMsg)
			result["push"] = push_result

	return jsonify(result)
コード例 #50
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def pushList():
	companyId = request.form.get("companyId") and request.form.get("companyId") or session.get("companyId")
	
	result_rows = db_session.query(PushMsg)\
			.filter(PushMsg.companyId==companyId)\
			.filter(PushMsg.isValid>0)\
			.order_by(PushMsg.id.desc())
	
	result = { "entries": list() }
	for row in result_rows :
		rowJSON = row.tojson()
		rowJSON["repeatVal"] = row.repeatVal and int(row.repeatVal)
		result["entries"].append(rowJSON)
	return jsonify(result)
コード例 #51
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def getSurveyPoints(userId):
	if not userId: return None

	my_result = db_session.query(Result.nth, Result.perTotal).filter(Result.userId==userId).group_by(Result.nth).order_by(Result.nth).all()
	result = {"first":0, "second":0, "zero":None}
	for nth, per in my_result:
		if nth==1:
			result["first"] = per
		elif nth==2:
			result["second"] = per
		else:
			result["zero"] = per

	return result
コード例 #52
0
ファイル: views.py プロジェクト: nelsontran/lilytask
def login():
    if request.method == "POST":
        _username = request.form["username"];
        _password = request.form["password"];

        user = db_session.query(User) \
                         .filter(User.username.like(_username)) \
                         .first()

        if user is not None and user.check_password(_password) is True:
            login_user(user)
            return redirect(url_for("landing.index"))

    return render_template("login.html", display_register_form=False)
コード例 #53
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def delGoodPost():
	update_result = db_session.query(GoodPost).filter_by(postId=request.form['postId'])\
					.filter_by(userId=request.form['userId']).filter_by(isValid=1).update({'isValid': 0})
	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()

	if(update_result==None):
		result = { "code": 400, "result": "DB Error" }
	elif(update_result==0):
		result = { "code": 401, "result": "No affected rows" }
	else:
		result = { "code": 200, "result": "Success" }
	return jsonify(result)
コード例 #54
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def uploadProfile():
	userId = request.form.get("userId")
	if userId==None :
		return jsonify({"code": 304, "result": "No user ID"})
	
	file = request.files['thumb']
	if file and allowed_file(file.filename):
		from werkzeug import secure_filename
		now = datetime.now()
		imgFilename = now.strftime("%y%m%d%H%M%S") + "_" + secure_filename(file.filename)
		# file.save( app.config['UPLOAD_FOLDER'] + '/' + imgFilename )

		from PIL import Image
		try:
			im = Image.open(file)
			
			width = 200
			imgW, imgH = im.size
			if imgW > width:
				height = int(width * (float(imgH) / float(imgW)))
				im.thumbnail((width, height), Image.ANTIALIAS)

			ext = imgFilename.rsplit('.', 1)[1]
			if ext=='jpg' or ext=='JPG': ext='JPEG'
			im.save(app.config['UPLOAD_FOLDER'] + '/' + imgFilename, ext.upper())

			thumbURL = 'http://oasis.kwig.co.kr/loadImage/' + imgFilename
			update_result = db_session.query(User).filter_by(userId=userId).update({'thumbURL': thumbURL})
			try:
				db_session.commit()
			except exc.IntegrityError as e:
				db_session.rollback()

			if(update_result==None):
				result = { "code": 400, "result": "DB Error" }
			elif(update_result==0):
				result = { "code": 401, "result": "No affected rows" }
			else:
				result = { "code": 200, "result": "Success", "imgURL": thumbURL }	

		except IOError:
			print "cannot create thumbnail"
			result = { "code": 500, "result": "File IO Error" }            

	else:
		result = { "code": 303, "result": "File Not Aloowed" }
	return jsonify(result)
コード例 #55
0
ファイル: appCtrl.py プロジェクト: kitworks/Oasis-App-API
def editGoodPostReply():
	update_result = db_session.query(GoodReply).filter_by(replyId=request.form['replyId'])\
					.filter_by(userId=request.form['userId']).filter_by(isValid=1)\
					.update({ 'text': request.form['text'], 'rdate': datetime.now() })
	try:
		db_session.commit()
	except exc.IntegrityError as e:
		db_session.rollback()

	if(update_result==None):
		result = { "code": 400, "result": "DB Error" }
	elif(update_result==0):
		result = { "code": 401, "result": "No affected rows" }
	else:
		result = { "code": 200, "result": "Success" }

	return jsonify(result)
コード例 #56
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def userList():
	companyId = request.form.get("companyId") and request.form.get("companyId") or session.get("companyId")

	result_rows = db_session.query(User, Group.name)\
			.outerjoin(Group, Group.groupId==User.groupId)\
			.filter(User.companyId==companyId)\
			.filter(User.isValid>0)\
			.order_by(User.userId.desc())
	
	result = { "entries": list() }
	for row, groupName in result_rows :
		rowJSON = row.tojson()
		rowJSON["groupName"] = groupName
		rowJSON["birthYear"] = row.birth and row.birth.year
		rowJSON["birthMonth"] = row.birth and row.birth.month
		result["entries"].append(rowJSON)
	return jsonify(result)
コード例 #57
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def groupList():

	companyId = session.get('companyId')
	if not companyId:
		return jsonify({"code": 405, "result":"no company id"})

	result_rows = db_session.query(Group, func.count(User.userId))\
			.outerjoin(User, and_(Group.groupId==User.groupId, User.isValid>0) )\
			.filter(Group.companyId==companyId)\
			.group_by(Group.groupId)\
			.order_by(Group.groupId.desc())
	
	result = { "entries": list() }
	for row, userCnt in result_rows :
		rowJSON = row.tojson()
		rowJSON["userCnt"] = userCnt
		result["entries"].append(rowJSON)
	return jsonify(result)
コード例 #58
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def partnerList():

	result_rows = db_session.query(Company, CompanyCategory.name, Account.email, func.count(User.userId))\
			.outerjoin(CompanyCategory, CompanyCategory.categoryId==Company.categoryId)\
			.outerjoin(Account, and_(Company.companyId==Account.companyId, Account.level==0) )\
			.outerjoin(User, and_(Company.companyId==User.companyId, User.isValid>0) )\
			.group_by(Company.companyId)\
			.filter(Company.isValid>0)\
			.order_by(Company.companyId.desc())
	
	result = { "entries": list() }
	for row, category, email, userCnt in result_rows :
		rowJSON = row.tojson()
		rowJSON["rdate"] = row.rdate.strftime("%Y-%m-%d")
		rowJSON["category"] = category
		rowJSON["admin"] = email
		rowJSON["userCnt"] = userCnt
		result["entries"].append(rowJSON)
	return jsonify(result)
コード例 #59
0
ファイル: cmsCtrl.py プロジェクト: kitworks/Oasis-App-API
def companyInfo():

	companyId = session['companyId']
	if not companyId:
		return jsonify({"code": 405, "result": "no company id"})

	result_rows = db_session.query(Company, CompanyCategory.name, Account.email)\
			.outerjoin(CompanyCategory, CompanyCategory.categoryId==Company.categoryId)\
			.outerjoin(Account, and_(Company.companyId==Account.companyId, Account.level==0) )\
			.filter(Company.isValid>0).filter(Company.companyId==companyId)\
			.limit(1)
	
	result = { "entries": list() }
	for row, category, email in result_rows :
		rowJSON = row.tojson()
		rowJSON["rdate"] = row.rdate.strftime("%Y-%m-%d")
		rowJSON["category"] = category
		rowJSON["admin"] = email
		result["entries"].append(rowJSON)
	return jsonify(result)
コード例 #60
0
def syncProjects(username):
    url='http://www.seerlabs.com:5556/api/getProject'
    user = User.query.filter_by(username=username).first()
    payload = {'email': user.email}
    response = requests.post(url, data=payload)
    responseJson = response.json()
    print(responseJson['projects'])

    for projectName in responseJson['projects']:
        print projectName
        (ret, ), = db_session.query(exists().where(Project.project_name==projectName))
        if(ret):
             project = Project.query.filter_by(project_name=projectName).first()
             user.projects.append(project)
             print "Existing"
        else:
            project = Project(projectName)
            if(add_to_db(project)):
                user.projects.append(project)
                db_session.commit()
                print "Project added"