diff --git a/spug_api/apps/exec/__init__.py b/spug_api/apps/exec/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/spug_api/apps/exec/models.py b/spug_api/apps/exec/models.py new file mode 100644 index 0000000..871ada6 --- /dev/null +++ b/spug_api/apps/exec/models.py @@ -0,0 +1,22 @@ +from django.db import models +from libs import ModelMixin, human_time +from apps.account.models import User + + +class ExecTemplate(models.Model, ModelMixin): + name = models.CharField(max_length=50) + type = models.CharField(max_length=50) + body = models.TextField() + desc = models.CharField(max_length=255, null=True) + + created_at = models.CharField(max_length=20, default=human_time) + created_by = models.ForeignKey(User, models.PROTECT, related_name='+') + updated_at = models.CharField(max_length=20, null=True) + updated_by = models.ForeignKey(User, models.PROTECT, related_name='+', null=True) + + def __repr__(self): + return '' % self.name + + class Meta: + db_table = 'exec_templates' + ordering = ('-id',) diff --git a/spug_api/apps/exec/urls.py b/spug_api/apps/exec/urls.py new file mode 100644 index 0000000..639d609 --- /dev/null +++ b/spug_api/apps/exec/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url + +from .views import * + +urlpatterns = [ + url(r'template/$', TemplateView.as_view()), +] diff --git a/spug_api/apps/exec/views.py b/spug_api/apps/exec/views.py new file mode 100644 index 0000000..7b46c23 --- /dev/null +++ b/spug_api/apps/exec/views.py @@ -0,0 +1,36 @@ +from django.views.generic import View +from libs import json_response, JsonParser, Argument, human_time +from apps.exec.models import ExecTemplate + + +class TemplateView(View): + def get(self, request): + templates = ExecTemplate.objects.all() + types = [x['type'] for x in templates.order_by('type').values('type').distinct()] + return json_response({'types': types, 'templates': [x.to_dict() for x in templates]}) + + def post(self, request): + form, error = JsonParser( + Argument('id', type=int, required=False), + Argument('name', help='请输入模版名称'), + Argument('type', help='请选择模版类型'), + Argument('body', help='请输入模版内容'), + Argument('desc', required=False) + ).parse(request.body) + if error is None: + if form.id: + form.updated_at = human_time() + form.updated_by = request.user + ExecTemplate.objects.filter(pk=form.pop('id')).update(**form) + else: + form.created_by = request.user + ExecTemplate.objects.create(**form) + return json_response(error=error) + + def delete(self, request): + form, error = JsonParser( + Argument('id', type=int, help='请指定操作对象') + ).parse(request.GET) + if error is None: + ExecTemplate.objects.filter(pk=form.id).delete() + return json_response(error=error) diff --git a/spug_api/spug/settings.py b/spug_api/spug/settings.py index 6f55d02..5f8343f 100644 --- a/spug_api/spug/settings.py +++ b/spug_api/spug/settings.py @@ -33,6 +33,7 @@ INSTALLED_APPS = [ 'apps.account', 'apps.host', 'apps.setting', + 'apps.exec', ] MIDDLEWARE = [ diff --git a/spug_api/spug/urls.py b/spug_api/spug/urls.py index a47d477..135ffed 100644 --- a/spug_api/spug/urls.py +++ b/spug_api/spug/urls.py @@ -18,4 +18,5 @@ from django.urls import path, include urlpatterns = [ path('account/', include('apps.account.urls')), path('host/', include('apps.host.urls')), + path('exec/', include('apps.exec.urls')), ]