Exemple #1
0
	def post(self):
		resource_id = self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		collaborators = self.request.get('collaborators').lower()
		collabList = collaborators.split(',')

		#uniquify the list
		uCollabList = set([c for c in collabList if c != ''])

		#don't duplicate sharing
		rows = models.UsersScripts.get_by_resource_id(resource_id)
		existing_collaborators = set([row.user.lower() for row in rows])
		new_collaborators = list(uCollabList - existing_collaborators)

		for collaborator in new_collaborators:
			u = models.UsersScripts(key_name="collab"+collaborator+resource_id,
						resource_id=resource_id,
						permission="collab",
						user=collaborator,
						last_updated=datetime.datetime.today(),
						title=p,
						folder="?none?")
			u.put()
			s = models.ShareNotify(user=collaborator,
					       resource_id = resource_id,
					       timeshared = datetime.datetime.today(),
					       timeopened = datetime.datetime.today(),
					       opened=False)
			s.put()
		if new_collaborators and self.request.get('sendEmail') == 'y':
			user = users.get_current_user().email()
			subject = user + " has shared a script with you on RawScripts.com"
			body_message = "http://www.rawscripts.com/editor?resource_id="+resource_id
			result = urlfetch.fetch("http://www.rawscripts.com/text/notify.txt")
			htmlbody = result.content
			html = htmlbody.replace("SCRIPTTITLE", p)
			html = html.replace("USER",users.get_current_user().email())
			html = html.replace("SCRIPTURL", body_message)
			divArea = ''
			if self.request.get('addMsg') == 'y':
				divArea = "<div style='width:300px; margin-left:20px; font-size:12pt; font-family:serif'>"
				divArea += self.request.get('msg')
				divArea += "<br><b>--" + user + "</b></div>"
			html = html.replace("TEXTAREA", divArea)
			body = body_message + """


	--- This Script written and sent from RawScripts.com. Check it out---"""

			mail.send_mail(sender=users.get_current_user().email(),
				       to=new_collaborators,
				       subject=subject,
				       body = body,
				       html = html)
		self.response.headers['Content-Type'] = 'text/plain'
		self.response.out.write(",".join(new_collaborators))
Exemple #2
0
	def post(self):
		resource_id = self.request.get('resource_id')
		title = ownerPermission(resource_id)
		if title == False:
			return
		screenplays = models.UsersScripts.get_by_resource_id(resource_id)
		for screenplay in screenplays:
			screenplay.permission = 'hardDelete'
			screenplay.put()
Exemple #3
0
	def post(self):
		resource_id = self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		rename = self.request.get('rename')
		screenplays = models.UsersScripts.get_by_resource_id(resource_id)
		for screenplay in screenplays:
			screenplay.title = rename
			screenplay.put()
Exemple #4
0
	def post(self):
		resource_id = self.request.get('resource_id')
		response = '0'
		p = ownerPermission(resource_id)
		if p != False:
			response = '1'
			screenplays = models.UsersScripts. \
				      get_by_resource_id(resource_id)
			for screenplay in screenplays:
				self.update_screenplay(screenplay)
		self.response.headers['Content-Type']='text/plain'
		self.response.out.write(response)
Exemple #5
0
	def post(self):
		resource_id = self.request.get('resource_id')
		p = permission(resource_id)
		if p == False:
			return
		title_page = self.request.get('title_page')
		subject = self.request.get('subject')
		body_message = self.request.get('body_message')
		result = urlfetch.fetch("http://www.rawscripts.com/text/email.txt")
		htmlbody = result.content
		html = htmlbody.replace("FILLERTEXT", body_message)
		body = body_message + """


	--- This Script written and sent from RawScripts.com. Check it out---"""

		# Make Recipient list instead of just one
		recipients=self.request.get('recipients').split(',')
		title = p
		latest = models.ScriptData.get_latest_version(resource_id)
		if not latest:
			return
		data = simplejson.loads(latest.data)
		title_page_obj = None
		if str(title_page) == '1':
			title_page_obj = models.TitlePageData.get_or_create(resource_id, title)
		newfile = export.Pdf(data, title_page_obj)
		filename = title + '.pdf'

		try:
			mail.send_mail(sender=users.get_current_user().email(),
				       to=recipients,
				       subject=subject,
				       body=body,
				       html=html,
				       attachments=[(filename, newfile.getvalue())])
		except:
			self.response.headers['Content-Type'] = 'text/plain'
			self.response.out.write('not sent')
			return

		if ownerPermission(resource_id) != False:
			J = simplejson.loads(latest.export)
			t = str(datetime.datetime.today())
			for recipient in recipients:
				J[0].append([recipient, t])
			latest.export = simplejson.dumps(J)
			latest.put()

		self.response.headers['Content-Type'] = 'text/plain'
		self.response.out.write('sent')
Exemple #6
0
	def post(self):
		resource_id=self.request.get('resource_id')
		if resource_id=="Demo":
			return
		p = ownerPermission(resource_id)
		if p == False:
			return
		fromPage=self.request.get('fromPage')
		thread_id = self.request.get('thread_id')
		r = models.Notes.get_by_resource_id_and_thread_id(resource_id, thread_id)
		r.delete()

		un = models.UnreadNotes.get_by_resource_id(resource_id, thread_id=thread_id)
		for i in un:
			i.delete()
Exemple #7
0
	def post(self):
		resource_id = self.request.get('resource_id')
		title = ownerPermission(resource_id)
		if title == False:
			return
		new_resource_id = models.UsersScripts.create_unique_resource_id()
		screenplay = None
		if self.request.path =='/revisionduplicate':
			v = int(self.request.get('version'))
			screenplay = models.ScriptData.get_version(resource_id, v)
		else:
			screenplay = models.ScriptData.get_latest_version(resource_id)
		data = screenplay.data
		version = screenplay.version

		s = models.ScriptData(resource_id=new_resource_id,
				      data=data,
				      version=version+1,
				      export="[[],[]]",
				      tag="",
				      autosave=0)
		s.put()
		d= models.DuplicateScripts(new_script = new_resource_id,
					   from_script = resource_id,
					   from_version=version)
		d.put()

		user = gcu()
		u = models.UsersScripts(key_name="owner"+user+new_resource_id,
					user=user,
					title='Copy of '+title,
					resource_id=new_resource_id,
					last_updated = datetime.datetime.today(),
					permission='owner',
					folder = "?none?")
		u.put()

		spelling_data = models.SpellingData.get_by_resource_id(resource_id)
		wrong = spelling_data.wrong if spelling_data else '[]'
		ignore = spelling_data.ignore if spelling_data else '[]'
		s = models.SpellingData(resource_id=new_resource_id,
					wrong=wrong,
					ignore=ignore)
		s.put()
		self.response.headers['Content-Type'] = 'text/plain'
		self.response.out.write('/editor?resource_id='+new_resource_id)
Exemple #8
0
	def post(self):
		resource_id=self.request.get('resource_id')
		if resource_id=="Demo":
			return
		p = ownerPermission(resource_id)
		if p == False:
			return
		positions = self.request.get('positions')
		J = simplejson.loads(positions)
		for i in J:
			r = models.Notes.get_by_resource_id_and_thread_id(resource_id, str(i[2]))
			r.row  = i[0]
			r.col = i[1]
			r.updated = datetime.datetime.utcnow()
			r.put()
		self.response.headers["Content-type"]="plain/text"
		self.response.out.write('1')
Exemple #9
0
	def post(self):
		resource_id=self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		screenplay = None
		version = self.request.get('version')
		if version =='latest':
			screenplay = models.ScriptData.get_last_version_number(resource_id)
		else:
			screenplay = models.ScriptData.get_version(resource_id, int(version))
		data = simplejson.loads(screenplay.data)
		v = ['s','a','c','d','p','t']
		contents=''
		for text, line_format in data:
			text = cgi.escape(text, quote=True)
			contents+='<p class="'+v[line_format]+'">'+text+"</p>"
		self.response.headers['Content-Type']='text/plain'
		self.response.out.write(contents)
Exemple #10
0
	def post(self):
		resource_id=self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		person = self.request.get('removePerson').lower()
		row = models.UsersScripts.get_by_resource_id_and_user(resource_id, person)
		if not row or row.permission != 'collab':
			return
		row.delete()

		notes = models.UnreadNotes.get_by_resource_id_and_user(resource_id, person)
		for note in notes:
			note.delete()

		notifications = models.ShareNotify.get_by_resource_id_and_user(resource_id, person)
		for n in notifications:
			n.delete()
		self.response.headers['Content-Type'] = 'text/plain'
		self.response.out.write(person)
Exemple #11
0
	def get(self):
		resource_id=self.request.get('resource_id')
		if resource_id=="Demo":
			return
		title = permission(resource_id)
		if title == False:
			return
		f = ownerPermission(resource_id)
		r = models.Notes.get_by_resource_id(resource_id)
		export=[]
		for i in r:
			export.append([i.row, i.col, simplejson.loads(i.data), i.thread_id])

		template_values={'j':simplejson.dumps(export),
						"user":gcu(),
						"sign_out": users.create_logout_url("/"),
						"title":title,
						"f":f
						}
		path = get_template_path('html/mobile/MobileViewNotes.html')
		self.response.out.write(template.render(path, template_values))
Exemple #12
0
	def post(self):
		resource_id = self.request.get('resource_id')
		thread_id=self.request.get('thread_id')
		msg_id=self.request.get('msgId')
		if resource_id=="Demo":
			self.response.out.write('deleted')
			return

		r = models.Notes.get_by_resource_id_and_thread_id(resource_id, thread_id)
		if r==None:
			self.response.out.write('no thread')
			return

		p = ownerPermission(resource_id)
		J = simplejson.loads(r.data)
		newJ=[]
		deleted=False
		for i in J:
			if i[2]==msg_id:
				if p!=False or i[1]==gcu():
					deleted=True
				else:
					newJ.append(i)
			else:
				newJ.append(i)
		if len(newJ)==0:
			r.delete()
		else:
			r.data=simplejson.dumps(newJ)
			r.updated = datetime.datetime.utcnow()
			r.put()
		self.response.headers['Content-Type'] = 'text/plain'
		if not deleted:
			self.response.out.write('error')
			return
		un = models.UnreadNotes.get_by_resource_id(resource_id, thread_id=thread_id)
		for i in un:
			if i.msg_id==msg_id:
				i.delete()
		self.response.out.write('deleted')
Exemple #13
0
	def post(self):
		resource_id=self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		ids = []
		new_script = resource_id
		while True:
			q = models.DuplicateScripts.all()
			q.filter('new_script =', new_script)
			r = q.get()
			if r is None:
				break
			new_script = r.from_script
			ids.append([new_script, r.from_version])
		out=[]
		for past_resource_id, past_version in ids:
			data = models.ScriptData.get_historical_metadata(past_resource_id, past_version)
			for e in data:
				updated = e.timestamp.strftime("%b %d")
				out.append([past_resource_id, updated, e.version, e.autosave, e.export, e.tag])
		j = simplejson.dumps(out)
		self.response.headers['Content-Type']= 'text/plain'
		self.response.out.write(j)
Exemple #14
0
	def get(self):
		resource_id = self.request.get('resource_id')
		p = ownerPermission(resource_id)
		if p == False:
			return
		r = models.ScriptData.get_historical_metadata(resource_id)
		for i in r:
			i.updated=i.timestamp.strftime("%b %d")
			J=simplejson.loads(i.export)
			i.emailed = "Emailed" if len(J[0]) > 0 else ''
			i.tagged = "" if i.tag == '' else 'Tag'
			i.autosave_class = 'autosave' if i.autosave else 'manualsave'
		sign_out = users.create_logout_url('/')
		user_email = gcu()
		template_values={'r':r,
										 'title':p,
										 'resource_id':resource_id,
										 'sign_out':sign_out,
										 'user': user_email,
										 }
		path = get_template_path('html/revisionhistory.html')
		template_values['MODE'] = config.MODE
		template_values['GA'] = config.GA
		self.response.out.write(template.render(path, template_values))