def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) if job.JobStage >= JobStatus.PrePress and job.JobStage <= JobStatus.Complete: if job.JobStage == JobStatus.PrePress: job.OrderStage = OrderStatus.PendingCustomerApproval if job.JobStage > JobStatus.PrePress: job.JobStage = job.JobStage - 1 job.OrderStage = OrderStatus.JobSubmitted else: job.JobStage = 0 job.put() add_history( "Advanced job to " + getStageDescription(job.JobStage), self.auth_current_user, job.key(), job.Client.key()) else: if job.OrderStage > OrderStatus.PendingCustomerApproval and job.OrderStage < OrderStatus.OutForDelivery: job.OrderStage -= 100 job.put() add_history( "Advanced job to " + getStageDescription(job.OrderStage), self.auth_current_user, job.key(), job.Client.key()) if self.request.is_xhr: context = {'regressed': True} return render_json_response(context)
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) if job.JobStage >= JobStatus.PrePress and job.JobStage <= JobStatus.Complete: if job.JobStage == JobStatus.PrePress: job.OrderStage = OrderStatus.PendingCustomerApproval if job.JobStage > JobStatus.PrePress: job.JobStage = job.JobStage - 1 job.OrderStage = OrderStatus.JobSubmitted else: job.JobStage = 0 job.put() add_history("Advanced job to " + getStageDescription(job.JobStage), self.auth_current_user, job.key(), job.Client.key()) else: if job.OrderStage > OrderStatus.PendingCustomerApproval and job.OrderStage < OrderStatus.OutForDelivery: job.OrderStage -= 100 job.put() add_history("Advanced job to " + getStageDescription(job.OrderStage), self.auth_current_user, job.key(), job.Client.key()) if self.request.is_xhr: context = {'regressed': True} return render_json_response(context)
def get(self): """Simply returns a rendered template with an enigmatic salutation.""" upload_url = blobstore.create_upload_url('/upload') auth_session = None if 'id' in self.auth_session: auth_session = self.auth_session template_values = { 'uploadurl' : upload_url, 'auth_session': auth_session, 'current_user': self.auth_current_user, 'login_url': self.auth_login_url(), 'logout_url': self.auth_logout_url(), 'current_url': self.request.url } if self.session.get('client') is not None: template_values['client'] = ClientModel.get(self.session.get('client')) history = JobHistoryModel.all() history.filter("Client =", ClientModel.get(self.session.get('client'))) history.order("-Created") history.fetch(100); template_values['history'] = history jobs = JobModel.all() jobs.filter("Client =", ClientModel.get(self.session.get('client'))) jobs.order("-Changed") jobs.fetch(100) template_values['jobs'] = jobs logging.log(logging.INFO, "client " + ClientModel.get(self.session.get('client')).Name + " has " + str(template_values['jobs'].count()) + " jobs") return self.render_response('clientlanding.html', **template_values)
def post(self, **kwargs): if not self.auth_current_user.is_admin and not self.auth_current_user.is_staff: return redirect(url_for('auth/login')) ids = self.request.form.get('jobids').split(',') logging.log(logging.INFO, " ids: %s" % self.request.form.get('jobids') ) if len(ids) > 0: invoice = InvoiceModel() invoice.CreatedBy = self.auth_current_user upload_files = self.get_uploads('invoice') blob_info = upload_files[0] invoice.File = str(blob_info.key()) logging.log(logging.INFO, "set uploaded file as %s" % blob_info.key()) invoice.Client = ClientModel.get(self.request.form.get('clientid')) invoice.put() for id in self.request.form.get('jobids').split(','): job = JobModel.get(id) job.Invoiced = True job.Invoice = invoice job.OrderStage = OrderStatus.Invoiced job.put() self.set_message('success', 'Successfully created invoice. ', flash=True, life=5) response = redirect_to('admin-invoices') # Clear the response body. response.data = '' return response
def get(self, **kwargs): if not self.auth_current_user.is_admin and not self.auth_current_user.is_staff: return redirect(url_for('auth/login')) clientid = kwargs['clientid'] jobs = JobModel.all() jobs.filter("Client = ", ClientModel.get(clientid)) jobs.filter("Invoiced != " , True) context = [] if self.request.is_xhr: for job in jobs: os = None js = None if job.OrderStage and lstOrderStages[job.OrderStage]: os = lstOrderStages[job.OrderStage] if job.JobStage: js = lstJobStages[job.JobStage] context.append({ 'name' : job.Nickname, 'jobstage': js, 'orderstage': os, 'id' : str(job.key()), 'created': job.Created.strftime("%b %d %Y"), 'quote' : job.Quote }); return render_json_response(context) else: return render_response('hello.html', **context)
def getArtifacts(jobid): artifacts = [] if jobid: for a in JobModel.get(jobid).Artifacts: f = blobstore.get(a) if f: artifacts.append({'name' : f.filename, 'contentType': f.content_type.replace('/', '_').replace('.', '_'), 'key': str(f.key()) }) return artifacts
def get(self, **kwargs): job = JobModel.get(kwargs['jobid']) output = StringIO.StringIO() z = zipfile.ZipFile(output,'w') history = JobHistoryModel.all() history.filter("Job = ", job) items = "" for item in history: username = item.CreatedBy.username items += item.Created.strftime("%b %d %Y - %I:%M%P") + "," + username +","+ item.Description+"\r\n" historycsv = StringIO.StringIO(items) z.writestr("history.csv", historycsv.read().encode('utf-8')) historycsv.close() communication = CommunicationModel.all() communication.filter("Job = ", job) items = "" for item in communication: username = item.CreatedBy.username items += item.Created.strftime("%b %d %Y - %I:%M%P") + "," + username +","+ item.Text+"\r\n" commcsv = StringIO.StringIO(items) z.writestr("communication.csv", commcsv.read().encode('utf-8')) commcsv.close() artifacts = job.Artifacts items = "" for item in artifacts: file = blobstore.get(item) items += file.filename+"\r\n" filescsv = StringIO.StringIO(items) z.writestr("files.csv", filescsv.read().encode('utf-8')) filescsv.close() items = "" items += "name, " + job.Nickname + "\r\n" items += "description, " + job.Description + "\r\n" items += "created, " + job.Created.strftime("%b %d %Y - %I:%M%P") + "\r\n" items += "created by, " + job.CreatedBy.username + "\r\n" items += "client, " + job.Client.Name + "\r\n" if job.Quote: items += "quote, " + job.Quote + "\r\n" datacsv = StringIO.StringIO(items) z.writestr("data.csv", datacsv.read().encode('utf-8')) datacsv.close() z.close() response = Response(output.getvalue()) response.headers["Content-Type"] = "multipart/x-zip" response.headers['Content-Disposition'] = "attachment; filename=" + job.JobNumber +".zip" return response
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) job.JobStage = JobStatus.PrePress job.put() add_history("Layout rejected by client. ", self.auth_current_user, job.key(), job.Client.key()) if self.request.is_xhr: context = {'regressed': True} return render_json_response(context)
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) job.OrderStage = OrderStatus.PendingCustomerApproval job.Quote = self.request.form.get('quote') job.put() add_history("Quote submitted to client. ", self.auth_current_user, job.key(), job.Client.key()) if self.request.is_xhr: context = {'advanced': True} return render_json_response(context)
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) job.OrderStage = OrderStatus.JobSubmitted job.JobStage = JobStatus.PrePress job.put() add_history("Quote accepted by client. ", self.auth_current_user, job.key(), job.Client.key()) if self.request.is_xhr: context = {'advanced': True} return render_json_response(context)
def get(self, **kwargs): if self.auth_current_user.is_admin or self.auth_current_user.is_staff: #this user is admin or staff kwargs['client'] = JobModel.get(kwargs['jobid']).Client kwargs['uploadurl'] = upload_url = blobstore.create_upload_url('/upload') kwargs['job'] = JobModel.get(kwargs['jobid']) kwargs['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages' : JobStatus(), 'allOrderStages' : lstOrderStages, 'allJobStages' : lstJobStages, 'allStages' : lstAllStages } logging.log(logging.INFO, kwargs['StatusInfo']) kwargs['isAdmin'] = self.auth_current_user.is_admin kwargs['isStaff'] = self.auth_current_user.is_staff kwargs['isClient'] = False kwargs['files'] = getArtifacts(kwargs['jobid']) kwargs['history'] = getHistory(kwargs['jobid']) kwargs['communication'] = get_communication(kwargs['jobid']) kwargs['token'] = addConnection(JobModel.get(kwargs['jobid']),self.auth_current_user); return self.render_response('job.html', **kwargs) else: if self.session.get('client') is not None and self.session.get('client') == str(JobModel.get(kwargs['jobid']).Client.key()): kwargs['client'] = ClientModel.get(self.session.get('client')) kwargs['uploadurl'] = upload_url = blobstore.create_upload_url('/upload') kwargs['job'] = JobModel.get(kwargs['jobid']) kwargs['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages' : JobStatus(), 'allOrderStages' : lstOrderStages, 'allJobStages' : lstJobStages } logging.log(logging.INFO, kwargs['StatusInfo']) kwargs['isClient'] = True kwargs['files'] = getArtifacts(kwargs['jobid']) kwargs['history'] = getHistory(kwargs['jobid']) kwargs['communication'] = get_communication(kwargs['jobid']) kwargs['token'] = addConnection(JobModel.get(kwargs['jobid']),self.auth_current_user); return self.render_response('job.html', **kwargs) else : return self.redirect("/login")
def post(self): if self.request.form.get('jobid'): add_communication(self.request.form.get('text'), self.auth_current_user, self.request.form.get('jobid')) context = {'added': True} connections = getConnections(JobModel.get(self.request.form.get('jobid')).key().id()) for connection in connections: logging.log(logging.INFO, 'sending message to ' + connection) channel.send_message(connection, "{'action': 'communication'}") else: context = {'added': False, 'reason' : "no job specified" } if self.request.is_xhr: return render_json_response(context)
def post(self): # 'file' is the name of the file upload field in the form. jobid = self.request.form.get('jobid') upload_files = self.get_uploads('file') blob_info = upload_files[0] job = JobModel.get(jobid) job.Artifacts.append(blob_info.key()) job.put() response = redirect_to('preview', resource=blob_info.key(), jobid=jobid) # Clear the response body. response.data = '' return response
def post(self): if self.request.form.get('jobid'): add_communication(self.request.form.get('text'), self.auth_current_user, self.request.form.get('jobid')) context = {'added': True} connections = getConnections( JobModel.get(self.request.form.get('jobid')).key().id()) for connection in connections: logging.log(logging.INFO, 'sending message to ' + connection) channel.send_message(connection, "{'action': 'communication'}") else: context = {'added': False, 'reason': "no job specified"} if self.request.is_xhr: return render_json_response(context)
def getArtifacts(jobid): artifacts = [] if jobid: for a in JobModel.get(jobid).Artifacts: f = blobstore.get(a) if f: artifacts.append({ 'name': f.filename, 'contentType': f.content_type.replace('/', '_').replace('.', '_'), 'key': str(f.key()) }) return artifacts
def get(self, **kwargs): auth_session = None if 'id' in self.auth_session: auth_session = self.auth_session template_values = { 'auth_session': auth_session, 'current_user': self.auth_current_user, 'login_url': self.auth_login_url(), 'logout_url': self.auth_logout_url(), 'current_url': self.request.url } try: if kwargs['view'] is not None: template_values['view'] = kwargs['view'] except: template_values['view'] = None if self.session.get('client') is not None: template_values['client'] = ClientModel.get( self.session.get('client')) history = JobHistoryModel.all() history.filter("Client =", ClientModel.get(self.session.get('client'))) history.order("-Created") history.fetch(100) template_values['history'] = history jobs = JobModel.all() jobs.filter("Client =", ClientModel.get(self.session.get('client'))) try: if kwargs['order']: jobs.order(kwargs['order']) else: jobs.order('OrderStage') except: jobs.order('OrderStage') template_values['jobs'] = jobs template_values['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages': JobStatus(), 'allOrderStages': lstOrderStages, 'allJobStages': lstJobStages } return self.render_response('clientlanding.html', **template_values)
def post(self, **kwargs): if not self.auth_current_user.is_admin and not self.auth_current_user.is_staff: return redirect(url_for('auth/login')) if self.request.form.get('invoiceid'): invoice = InvoiceModel.get(self.request.form.get('invoiceid')) invoice.Paid = True invoice.put() jobs = JobModel.all() jobs.filter("Invoice = ", invoice) for job in jobs: job.OrderStage = OrderStatus.Paid job.put() context = {'invoiced': True } if self.request.is_xhr: return render_json_response(context)
def get(self, **kwargs): auth_session = None if 'id' in self.auth_session: auth_session = self.auth_session template_values = { 'auth_session': auth_session, 'current_user': self.auth_current_user, 'login_url': self.auth_login_url(), 'logout_url': self.auth_logout_url(), 'current_url': self.request.url } try: if kwargs['view'] is not None: template_values['view'] = kwargs['view'] except: template_values['view'] = None if self.session.get('client') is not None: template_values['client'] = ClientModel.get(self.session.get('client')) history = JobHistoryModel.all() history.filter("Client =", ClientModel.get(self.session.get('client'))) history.order("-Created") history.fetch(100); template_values['history'] = history jobs = JobModel.all() jobs.filter("Client =", ClientModel.get(self.session.get('client'))) try: if kwargs['order']: jobs.order(kwargs['order']) else: jobs.order('OrderStage') except: jobs.order('OrderStage') template_values['jobs'] = jobs template_values['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages' : JobStatus(), 'allOrderStages' : lstOrderStages, 'allJobStages' : lstJobStages } return self.render_response('clientlanding.html', **template_values)
def get(self, **kwargs): job = JobModel.get(kwargs['jobid']) blobstore.delete(job.Artifacts) job.Artifacts = [] history = JobHistoryModel.all() history.filter("Job = ", job) for item in history: logging.log(logging.INFO, "deleted %s" % item.key()) item.delete() communication = CommunicationModel.all() communication.filter("Job = ", job) for item in communication: logging.log(logging.INFO, "deleted %s" % item.key()) item.delete() job.delete() self.set_message('success', 'The job, files, and all related information were successfully cleared.', flash=True, life=5) return redirect_to('home')
def get(self, **kwargs): if self.auth_current_user.is_admin or self.auth_current_user.is_staff: #this user is admin or staff kwargs['client'] = JobModel.get(kwargs['jobid']).Client kwargs['uploadurl'] = upload_url = blobstore.create_upload_url( '/upload') kwargs['job'] = JobModel.get(kwargs['jobid']) kwargs['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages': JobStatus(), 'allOrderStages': lstOrderStages, 'allJobStages': lstJobStages, 'allStages': lstAllStages } logging.log(logging.INFO, kwargs['StatusInfo']) kwargs['isAdmin'] = self.auth_current_user.is_admin kwargs['isStaff'] = self.auth_current_user.is_staff kwargs['isClient'] = False kwargs['files'] = getArtifacts(kwargs['jobid']) kwargs['history'] = getHistory(kwargs['jobid']) kwargs['communication'] = get_communication(kwargs['jobid']) kwargs['token'] = addConnection(JobModel.get(kwargs['jobid']), self.auth_current_user) return self.render_response('job.html', **kwargs) else: if self.session.get('client') is not None and self.session.get( 'client') == str( JobModel.get(kwargs['jobid']).Client.key()): kwargs['client'] = ClientModel.get(self.session.get('client')) kwargs['uploadurl'] = upload_url = blobstore.create_upload_url( '/upload') kwargs['job'] = JobModel.get(kwargs['jobid']) kwargs['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages': JobStatus(), 'allOrderStages': lstOrderStages, 'allJobStages': lstJobStages } logging.log(logging.INFO, kwargs['StatusInfo']) kwargs['isClient'] = True kwargs['files'] = getArtifacts(kwargs['jobid']) kwargs['history'] = getHistory(kwargs['jobid']) kwargs['communication'] = get_communication(kwargs['jobid']) kwargs['token'] = addConnection(JobModel.get(kwargs['jobid']), self.auth_current_user) return self.render_response('job.html', **kwargs) else: return self.redirect("/login")
def get(self): """Simply returns a rendered template with an enigmatic salutation.""" upload_url = blobstore.create_upload_url('/upload') auth_session = None if 'id' in self.auth_session: auth_session = self.auth_session template_values = { 'uploadurl': upload_url, 'auth_session': auth_session, 'current_user': self.auth_current_user, 'login_url': self.auth_login_url(), 'logout_url': self.auth_logout_url(), 'current_url': self.request.url } if self.session.get('client') is not None: template_values['client'] = ClientModel.get( self.session.get('client')) history = JobHistoryModel.all() history.filter("Client =", ClientModel.get(self.session.get('client'))) history.order("-Created") history.fetch(100) template_values['history'] = history jobs = JobModel.all() jobs.filter("Client =", ClientModel.get(self.session.get('client'))) jobs.order("-Changed") jobs.fetch(100) template_values['jobs'] = jobs logging.log( logging.INFO, "client " + ClientModel.get(self.session.get('client')).Name + " has " + str(template_values['jobs'].count()) + " jobs") return self.render_response('clientlanding.html', **template_values)
def get(self, **kwargs): if not self.auth_current_user.is_admin and not self.auth_current_user.is_staff: return redirect(url_for('auth/login')) kwargs['client'] = ClientModel.get(kwargs['clientid']) # kwargs['history'] = db.Query("SELECT * FROM JobHistoryModel WHERE Client=:client ORDER BY Created LIMIT 30", client=ClientModel.get(kwargs['clientid'])) history = JobHistoryModel.all() history.filter("Client =", ClientModel.get(kwargs['clientid'])) history.order("-Created").fetch(200) kwargs['history'] = history kwargs['stages'] = lstStages kwargs['stagesEnum'] = Stages() jobs = JobModel.all() jobs.filter("Client =", ClientModel.get(kwargs['clientid'])) try: if kwargs['order']: jobs.order(kwargs['order']) else: jobs.order('Stage') except: jobs.order('Stage') kwargs['jobs'] = jobs return self.render_response('adminclient.html', **kwargs)
def get(self, **kwargs): if not self.auth_current_user.is_admin and not self.auth_current_user.is_staff: return redirect(url_for('auth/login')) kwargs['history'] = JobHistoryModel.all().order('-Created').fetch(20) for h in kwargs['history']: h.Created = h.Created.replace(tzinfo=pytz.timezone('US/Eastern')).astimezone(timezone("US/Eastern")) kwargs['StatusInfo'] = { 'OrderStages': OrderStatus(), 'JobStages' : JobStatus(), 'allOrderStages' : lstOrderStages, 'allJobStages' : lstJobStages } jobs = JobModel.all() try: if kwargs['order']: jobs.order(kwargs['order']) else: jobs.order('OrderStage') except: jobs.order('OrderStage') try: if kwargs['clientid']: jobs.filter("Client = " , ClientModel.get(kwargs['clientid'])) except: pass kwargs['jobs'] = jobs kwargs['clients'] = ClientModel.all() for job in kwargs['jobs']: job.Created = job.Created.replace(tzinfo=pytz.timezone('US/Mountain')).astimezone(timezone("US/Mountain")) return self.render_response('admindashboard.html', **kwargs)
def getHistory(jobid): history = JobHistoryModel.all() history.filter("Job =", JobModel.get(jobid)) history.order("-Created") history.fetch(100); return history
def get(self, **kwargs): kwargs['job'] = JobModel.get(kwargs['jobid']) kwargs['files'] = getArtifacts(kwargs['jobid']) return self.render_response('archive.html', **kwargs)
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) job.ChangedBy = self.auth_current_user job.Description = self.request.form.get('description') job.Nickname = self.request.form.get('nickname') add_history("job was updated", self.auth_current_user, job.key(), self.auth_current_user.assigned_to) job.put() else: job = JobModel() job.Approved = False job.Description = self.request.form.get('description') job.Nickname = self.request.form.get('nickname') job.ChangedBy = self.auth_current_user job.CreatedBy = self.auth_current_user job.Client = ClientModel.get(self.auth_current_user.assigned_to) job.OrderStage = OrderStatus.PendingQuote job.put() #.Created.strftime("%a, %b %d %Y - %I:%M%P") job.JobNumber = job.Created.strftime("%Y_%b_%d_") job.JobNumber += str(job.key().id()) job.put() add_history("a request for a quote was started. ", self.auth_current_user, job.key(), self.auth_current_user.assigned_to) context = {'added': True, 'key' : str(job.key()) } if self.request.is_xhr: return render_json_response(context) else: return render_response('hello.html', **context)
def post(self): if self.request.form.get('jobid'): job = JobModel.get(self.request.form.get('jobid')) job.ChangedBy = self.auth_current_user job.Description = self.request.form.get('description') job.Nickname = self.request.form.get('nickname') add_history("job was updated", self.auth_current_user, job.key(), self.auth_current_user.assigned_to) job.put() else: job = JobModel() job.Approved = False job.Description = self.request.form.get('description') job.Nickname = self.request.form.get('nickname') job.ChangedBy = self.auth_current_user job.CreatedBy = self.auth_current_user job.Client = ClientModel.get(self.auth_current_user.assigned_to) job.OrderStage = OrderStatus.PendingQuote job.put() #.Created.strftime("%a, %b %d %Y - %I:%M%P") job.JobNumber = job.Created.strftime("%Y_%b_%d_") job.JobNumber += str(job.key().id()) job.put() add_history("a request for a quote was started. ", self.auth_current_user, job.key(), self.auth_current_user.assigned_to) context = {'added': True, 'key': str(job.key())} if self.request.is_xhr: return render_json_response(context) else: return render_response('hello.html', **context)
def getHistory(jobid): history = JobHistoryModel.all() history.filter("Job =", JobModel.get(jobid)) history.order("-Created") history.fetch(100) return history