def post(self, entry_index=None): entry = Entry.get_entry(entry_index) if not entry or entry.is_removed: self.siteError( SiteErrorType.ERROR_ENTRY_NOT_EXIST ) return is_spam = self.request.get('is_spam') if is_spam: # block user siteUser = User.getSiteUser( entry.user ) siteUser.status = UserStatus.USER_BANED siteUser.put() site_user_id = siteUser.key().id() # delete user's comment Comment.delete_with_user_id(site_user_id) # delete user's entry Entry.delete_with_user_id(site_user_id) #delete comment for comment in entry.comments: comment.delete() Entry.delete_entry(entry_index) self.redirect( "/admin/entry" )
def get(self, type, site_user_id, cursor=None): logging.info( type ) if type != "entry" and type != "comment": self.siteError( SiteErrorType.ERROR_INVALID_ACCESS ) return if cursor: cursor = urllib.unquote(cursor).decode('utf-8') self.context['siteUser'] = User.get_by_id( int( site_user_id ) ) if type == "entry": query = Entry.all() query.filter("site_user_id", int( site_user_id) ) query.filter("is_removed", False) query.order("-created_on") elif type == "comment": query = Comment.all() query.filter("site_user_id", int( site_user_id) ) query.order("-created_on") logging.info( query.__dict__ ) paging = Paging( query ) paging.setLimit(10) paging.setCurrentCursor(cursor) paging.execute() self.context['paging'] = paging if type == "entry": self.render( "admin/entry.html" ) elif type == "comment": self.render( "admin/comment.html" )
def get(self, comment_id=None): comment_id = int( comment_id ) comment = Comment.get_by_id( comment_id ) if not comment: self.siteError( SiteErrorType.ERROR_COMMENT_NOT_EXIST ) return self.context['comment'] = comment self.render('admin/delete_comment.html') pass
def post(self, comment_id=None): comment_id = int( comment_id ) comment = Comment.get_by_id( comment_id ) if not comment: self.siteError( SiteErrorType.ERROR_COMMENT_NOT_EXIST ) return siteUser = User.getSiteUser( comment.user ) Comment.delete_comment(comment) is_spam = self.request.get('is_spam') if is_spam: siteUser.status = UserStatus.USER_BANED siteUser.put() site_user_id = siteUser.key().id() # delete user's comment Comment.delete_with_user_id(site_user_id) # delete user's entry Entry.delete_with_user_id(site_user_id) self.redirect( '/admin/comment' )
def get(self, cursor=None): if cursor: cursor = urllib.unquote(cursor).decode('utf-8') query = Comment.all() query.order("-created_on") paging = Paging(query) paging.setLimit(10) paging.setCurrentCursor(cursor) paging.execute() self.context['paging'] = paging self.render( "admin/comment.html" )
def get_comment(request, question_id): content = request.form.get("comment") if content: user_id = session.get("user_id") com = Comment(content=content, question_id=question_id, author_id=user_id) try: db.session.add(com) db.session.commit() return "ok" except Exception as e: print(e) db.session.rollback() return "fall" else: return "mn"
def assign_dev(): ticket_id = request.form.get('ticket_id') ticket = Ticket.query.get(ticket_id) ticket.assigned_user_id = request.form.get('dev_name') ticket.update() #Insert record in ticket history user_id = request.form.get('dev_name') today = date.today() #t_update_date = today.strftime("%d/%m/%Y") t_update_date = constants.CURRENT_DATE t_history_id = db.session.query(func.max( Ticket_history.t_history_id)).all() if t_history_id[0][0] == None: ticket_history = Ticket_history(1, ticket_id, user_id, ticket.t_status, t_update_date, ticket.t_priority) else: ticket_history = Ticket_history(t_history_id[0][0] + 1, ticket_id, user_id, ticket.t_status, t_update_date, ticket.t_priority) try: ticket_history.insert() except: print(sys.exc_info()) abort(500) #Insert record in comments userinfo = session.get('profile') assigned_user_name = Users.query.with_entities( Users.user_name).filter(Users.user_id == user_id).one() c_id = db.session.query(func.max(Comment.c_id)).all() if c_id[0][0] == None: comment = Comment(1, ticket_id, userinfo['user_id'], t_update_date, " assigned developer " + assigned_user_name[0]) else: comment = Comment(c_id[0][0] + 1, ticket_id, userinfo['user_id'], t_update_date, " assigned developer " + assigned_user_name[0]) try: comment.insert() except: print(sys.exc_info()) abort(500) #Record a notification notification = Notification(ticket_id, user_id, 'Assigned') try: notification.insert() except: print(sys.exc_info()) abort(500) return redirect('/ticketdetails/' + ticket_id)
def post(self, index=None): if not self.context['user'].get_current_user(): self.siteError( SiteErrorType.ERROR_INVALID_ACCESS ) return self.context['index'] = index entry = Entry.get_entry( index ) if not entry or entry.is_removed: self.siteError( getSiteErrorMessage("entry_not_exist") ) return remote_addr = self.request.remote_addr if not remote_addr: self.siteError( getSiteErrorMessage("invalid_access") ) return user = self.context['user'].get_current_user() User.insertUser(user, remote_addr) if self.context['user'] and User.isUserNeedCaptcha( self.get_current_user() ): comment_form = CommentRecaptchaForm(self.request.remote_addr, data = self.request.POST) else: comment_form = CommentForm(data = self.request.POST) if comment_form.is_valid(): comment = Comment.insert(entry, comment_form.cleaned_data['content'], user, remote_addr) entry.comment_count = entry.comment_count + 1 entry.updated_on = datetime.datetime.now() entry.put() PagingCursorMasterKey.clearModelKey("Comment") self.redirect("/entry/%s#comment%d"%(index, comment.id())) else: self.createCSRFToken() self.context['entry'] = entry self.context['comment_form'] = comment_form self.render("view.html")
def submit_comment(): comment_text = request.form.get('comment') ticket_id = request.form.get('ticket_id') today = date.today() #update_date = today.strftime("%d/%m/%Y") update_date = constants.CURRENT_DATE userinfo = session.get('profile') user_id = Users.query.with_entities( Users.user_id).filter_by(user_email=userinfo['email']) c_id = db.session.query(func.max(Comment.c_id)).all() if c_id[0][0] == None: comment_entry = Comment(1, ticket_id, user_id, update_date, comment_text) else: comment_entry = Comment(c_id[0][0] + 1, ticket_id, user_id, update_date, comment_text) try: comment_entry.insert() except: print(sys.exc_info()) abort(500) return redirect('/ticketdetails/' + ticket_id)
def update_project_status(): userinfo = session.get('profile') ticket_id = request.form.get('ticket_id') ticket_entry = Ticket.query.get(ticket_id) #today = date.today() #t_update_date = today.strftime("%d/%m/%Y") t_update_date = constants.CURRENT_DATE t_status = request.form.get('input') p_name = request.form.get('p_name') ticket_entry.t_status = t_status try: ticket_entry.update() except: print(sys.exc_info()) abort(500) if t_status == "Closed": ticket_entry.t_close_date = t_update_date #ENTER IN TICKET HISTORY ticket_id = ticket_entry.t_id t_history_id = db.session.query(func.max( Ticket_history.t_history_id)).all() if t_history_id[0][0] == None: ticket_history_entry = Ticket_history(1, ticket_id, ticket_entry.assigned_user_id, t_status, t_update_date, ticket_entry.t_priority) else: ticket_history_entry = Ticket_history(t_history_id[0][0] + 1, ticket_id, ticket_entry.assigned_user_id, t_status, t_update_date, ticket_entry.t_priority) try: ticket_history_entry.insert() except: print(sys.exc_info()) abort(500) #ENTER IN NOTIFICATIONS p_id = Project.query.with_entities( Project.p_id).filter(Project.p_name == p_name).one() user_list = Map_user_proj.query.with_entities( Map_user_proj.user_id).filter(Map_user_proj.p_id == p_id).all() for user in user_list: notification = Notification(ticket_id, user, 'Update') try: notification.insert() except: print(sys.exc_info()) abort(500) #Insert record in comments c_id = db.session.query(func.max(Comment.c_id)).all() if c_id[0][0] == None: comment = Comment(1, ticket_id, userinfo['user_id'], t_update_date, " Updated ticket status to " + t_status) else: comment = Comment(c_id[0][0] + 1, ticket_id, userinfo['user_id'], t_update_date, " Updated ticket status to " + t_status) try: comment.insert() except: print(sys.exc_info()) abort(500) return redirect('/ticketdetails/' + str(ticket_id))
def get_ticket_details(ticket_id): userinfo = session.get('profile') #Check whether the request is valid authorized_personnel = Map_user_proj.query.join(Ticket, Map_user_proj.p_id == Ticket.p_id)\ .add_columns(Map_user_proj.user_id).filter(Map_user_proj.user_id== userinfo['user_id'])\ .filter(Ticket.t_id == ticket_id).all() if len(authorized_personnel) == 0 and userinfo['role'] != 'Admin': abort(401) result = Ticket_history.query.join(Users, Ticket_history.user_id == Users.user_id, isouter=True)\ .add_columns(Ticket_history.t_id, Users.user_name.label('user_id'), Ticket_history.t_status, Ticket_history.t_update_date\ ,Ticket_history.t_priority)\ .filter(Ticket_history.t_id == ticket_id) ticket_history_list = [row for row in result] ticket_history = [ Ticket_history.json_format(row) for row in ticket_history_list ] #SELECT TICKET INFORMATION FOR TICKET_ID. SELECT PROJECT NAME AS 'P_ID' sql_ticket = text(""" SELECT tick.t_id, tick.t_title, tick.t_desc, u.user_name AS assigned_user_id, tick.submitter_email, proj.p_name AS p_id, tick.t_priority, tick.t_status, tick.t_type, tick.t_create_date, tick.t_close_date FROM ticket tick INNER JOIN project proj ON tick.p_id = proj.p_id LEFT OUTER JOIN users u ON u.user_id = tick.assigned_user_id WHERE tick.t_id = """ + str(ticket_id) + """ """) result_ticket = db.session.execute(sql_ticket) ticket_list = [row for row in result_ticket] ticket = [Ticket.json_format(row) for row in ticket_list] comment_list = Comment.query.join(Users, Comment.user_id==Users.user_id)\ .add_columns(Comment.t_id, Comment.comment, Comment.date, Users.user_name.label('user_id'))\ .filter(Comment.t_id==ticket_id)\ .order_by(Comment.c_id.desc()).all() comment = [Comment.json_format(row) for row in comment_list] #Get list of developers in the project for assigning dev_list = Ticket.query.join(Map_user_proj, Ticket.p_id == Map_user_proj.p_id)\ .join(Users, Map_user_proj.user_id == Users.user_id)\ .add_columns(Users.user_name, Users.user_id)\ .filter(Ticket.t_id == ticket_id).filter(Map_user_proj.user_role == 'Developer').all() assigned_dev_id = Ticket.query.with_entities( Ticket.assigned_user_id).filter(Ticket.t_id == ticket_id).all() #Get notifications notification_list = NotificationController.get_notifications( userinfo['user_id']) notification_count = len(notification_list) data = { "ticket": ticket, "ticket_history": ticket_history, "userinfo": userinfo, "user_id": userinfo['user_id'], "role": userinfo['role'], "username": userinfo['nickname'], "page": "ticket_detail", "comment": comment, "dev_list": dev_list, "notification": notification_list, "notification_count": notification_count, "assigned_dev": assigned_dev_id[0][0] } return render_template('ticket_details.html', data=data)