shout under organization
This commit is contained in:
@@ -9,32 +9,49 @@ from settings import SHOUTS_REPO
|
||||
import subprocess
|
||||
import asyncio
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
class GitTask:
|
||||
|
||||
queue = asyncio.Queue()
|
||||
|
||||
def __init__(self, shout_id, shout_body, username, user_email, comment):
|
||||
self.shout_id = shout_id;
|
||||
self.shout_body = shout_body;
|
||||
def __init__(self, input, username, user_email, comment):
|
||||
self.slug = input["slug"];
|
||||
self.org = input["org"];
|
||||
self.shout_body = input["body"];
|
||||
self.username = username;
|
||||
self.user_email = user_email;
|
||||
self.comment = comment;
|
||||
|
||||
GitTask.queue.put_nowait(self)
|
||||
|
||||
def execute(self):
|
||||
cmd = "cd %s; git checkout master" % (SHOUTS_REPO)
|
||||
|
||||
def init_repo(self):
|
||||
repo_path = "%s/%s" % (SHOUTS_REPO, self.org)
|
||||
|
||||
Path(repo_path).mkdir()
|
||||
|
||||
cmd = "cd %s && git init && touch initial && git add initial && git commit -m 'init repo'" % (repo_path)
|
||||
output = subprocess.check_output(cmd, shell=True)
|
||||
print(output)
|
||||
|
||||
shout_filename = "shout%s.md" % (self.shout_id)
|
||||
shout_full_filename = "%s/%s" % (SHOUTS_REPO, shout_filename)
|
||||
def execute(self):
|
||||
repo_path = "%s/%s" % (SHOUTS_REPO, self.org)
|
||||
|
||||
if not Path(repo_path).exists():
|
||||
self.init_repo()
|
||||
|
||||
cmd = "cd %s && git checkout master" % (repo_path)
|
||||
output = subprocess.check_output(cmd, shell=True)
|
||||
print(output)
|
||||
|
||||
shout_filename = "%s.md" % (self.slug)
|
||||
shout_full_filename = "%s/%s" % (repo_path, shout_filename)
|
||||
with open(shout_full_filename, mode='w', encoding='utf-8') as shout_file:
|
||||
shout_file.write(self.shout_body)
|
||||
|
||||
author = "%s <%s>" % (self.username, self.user_email)
|
||||
cmd = "cd %s; git add %s; git commit -m '%s' --author='%s'" % \
|
||||
(SHOUTS_REPO, shout_filename, self.comment, author)
|
||||
cmd = "cd %s && git add %s && git commit -m '%s' --author='%s'" % \
|
||||
(repo_path, shout_filename, self.comment, author)
|
||||
output = subprocess.check_output(cmd, shell=True)
|
||||
print(output)
|
||||
|
||||
@@ -63,7 +80,7 @@ async def top_shouts(_, info):
|
||||
|
||||
@mutation.field("createShout")
|
||||
@login_required
|
||||
async def create_shout(_, info, body):
|
||||
async def create_shout(_, info, input):
|
||||
auth = info.context["request"].auth
|
||||
user_id = auth.user_id
|
||||
|
||||
@@ -71,16 +88,21 @@ async def create_shout(_, info, body):
|
||||
user = session.query(User).filter(User.id == user_id).first()
|
||||
|
||||
new_shout = Shout.create(
|
||||
slug = input["slug"],
|
||||
org = input["org"],
|
||||
author_id = user_id,
|
||||
body = body
|
||||
body = input["body"],
|
||||
replyTo = input.get("replyTo"),
|
||||
versionOf = input.get("versionOf"),
|
||||
tags = input.get("tags"),
|
||||
topics = input.get("topics")
|
||||
)
|
||||
|
||||
task = GitTask(
|
||||
new_shout.id,
|
||||
body,
|
||||
input,
|
||||
user.username,
|
||||
user.email,
|
||||
"new shout %s" % (new_shout.id)
|
||||
"new shout %s" % (new_shout.slug)
|
||||
)
|
||||
|
||||
return {
|
||||
|
Reference in New Issue
Block a user