aptpath-models 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. aptpath_models-0.1.0/PKG-INFO +83 -0
  2. aptpath_models-0.1.0/README.md +68 -0
  3. aptpath_models-0.1.0/aptpath_models/__init__.py +1 -0
  4. aptpath_models-0.1.0/aptpath_models/apps.py +7 -0
  5. aptpath_models-0.1.0/aptpath_models/models/__init__.py +320 -0
  6. aptpath_models-0.1.0/aptpath_models/models/assessments_tests.py +84 -0
  7. aptpath_models-0.1.0/aptpath_models/models/base.py +114 -0
  8. aptpath_models-0.1.0/aptpath_models/models/blogs.py +85 -0
  9. aptpath_models-0.1.0/aptpath_models/models/college.py +163 -0
  10. aptpath_models-0.1.0/aptpath_models/models/company.py +117 -0
  11. aptpath_models-0.1.0/aptpath_models/models/courses.py +123 -0
  12. aptpath_models-0.1.0/aptpath_models/models/employer_ext.py +212 -0
  13. aptpath_models-0.1.0/aptpath_models/models/internship.py +929 -0
  14. aptpath_models-0.1.0/aptpath_models/models/jobs.py +273 -0
  15. aptpath_models-0.1.0/aptpath_models/models/labs.py +345 -0
  16. aptpath_models-0.1.0/aptpath_models/models/learning_path.py +100 -0
  17. aptpath_models-0.1.0/aptpath_models/models/lms_partner.py +169 -0
  18. aptpath_models-0.1.0/aptpath_models/models/logs.py +79 -0
  19. aptpath_models-0.1.0/aptpath_models/models/meetings.py +28 -0
  20. aptpath_models-0.1.0/aptpath_models/models/moodle.py +119 -0
  21. aptpath_models-0.1.0/aptpath_models/models/nav.py +57 -0
  22. aptpath_models-0.1.0/aptpath_models/models/neo4j_nodes.py +174 -0
  23. aptpath_models-0.1.0/aptpath_models/models/payment.py +46 -0
  24. aptpath_models-0.1.0/aptpath_models/models/skills.py +62 -0
  25. aptpath_models-0.1.0/aptpath_models/models/user_profile.py +65 -0
  26. aptpath_models-0.1.0/aptpath_models/models/users.py +295 -0
  27. aptpath_models-0.1.0/aptpath_models/models/xapi.py +13 -0
  28. aptpath_models-0.1.0/aptpath_models.egg-info/PKG-INFO +83 -0
  29. aptpath_models-0.1.0/aptpath_models.egg-info/SOURCES.txt +32 -0
  30. aptpath_models-0.1.0/aptpath_models.egg-info/dependency_links.txt +1 -0
  31. aptpath_models-0.1.0/aptpath_models.egg-info/requires.txt +8 -0
  32. aptpath_models-0.1.0/aptpath_models.egg-info/top_level.txt +1 -0
  33. aptpath_models-0.1.0/pyproject.toml +28 -0
  34. aptpath_models-0.1.0/setup.cfg +4 -0
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.4
2
+ Name: aptpath-models
3
+ Version: 0.1.0
4
+ Summary: Consolidated Django ORM models for the Aptpath platform.
5
+ License: Proprietary
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: Django>=4.2
9
+ Requires-Dist: psycopg2-binary
10
+ Requires-Dist: neomodel>=5.0
11
+ Requires-Dist: django-ckeditor
12
+ Provides-Extra: dev
13
+ Requires-Dist: build; extra == "dev"
14
+ Requires-Dist: twine; extra == "dev"
15
+
16
+ # aptpath-models
17
+
18
+ Consolidated Django ORM models for the Aptpath platform, published as a reusable pip package.
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ pip install aptpath-models
24
+ ```
25
+
26
+ Or directly from source:
27
+
28
+ ```bash
29
+ pip install git+<repo-url>
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ Add `aptpath_models` to `INSTALLED_APPS` in your Django settings:
35
+
36
+ ```python
37
+ INSTALLED_APPS = [
38
+ ...
39
+ 'aptpath_models',
40
+ ]
41
+ ```
42
+
43
+ Import models directly:
44
+
45
+ ```python
46
+ from aptpath_models.models import Profile, Company, Internship, LMSCourse
47
+ ```
48
+
49
+ ## Package structure
50
+
51
+ ```
52
+ aptpath_models/
53
+ models/
54
+ base.py # Abstract base models
55
+ neo4j_nodes.py # Neo4j StructuredNode classes (neomodel)
56
+ users.py # MongoUser, MongoEmployer, AptPathAdmin, Profile, Permissions
57
+ skills.py # MongoSkill, MongoCategories, Language, MongoAccountType, MongoRole
58
+ user_profile.py # UserEducation, UserExperience, UserCertificate
59
+ company.py # Company, Employment, Invitation, Notification, Activity
60
+ college.py # College and related models
61
+ courses.py # MongoCourse, LMSSystem, CourseTemplates
62
+ jobs.py # Jobs, MongoApplications, JobTemplates, Assessments, DailyStreak
63
+ learning_path.py # LearningPath, LearningPathModule and templates
64
+ assessments_tests.py # AptpathTests, Durationmodel and templates
65
+ nav.py # NavigationItem, NavigationSubheader
66
+ xapi.py # XAPIStatement
67
+ moodle.py # MoodleCourse, MoodleCourseCompletion, MoodleUser
68
+ logs.py # OperationLog (all user types)
69
+ internship.py # Internship, InternshipBatches, Coupon, LeaveRequest, etc.
70
+ labs.py # Lab, SkillBuilder, CodingAssessment, StudentTasks, etc.
71
+ lms_partner.py # LMSCourse, CourseEnrollmentPaymentDetails, UserCourseStatus
72
+ blogs.py # AptpathBlog, Blog and related content models
73
+ employer_ext.py # JobV2, JobApplicationsV2, Roles, InternJobProfile
74
+ payment.py # PaymentDetails
75
+ meetings.py # Recordings
76
+ ```
77
+
78
+ ## Requirements
79
+
80
+ - Django >= 4.2
81
+ - psycopg2-binary (PostgreSQL)
82
+ - neomodel >= 5.0 (Neo4j graph nodes)
83
+ - django-ckeditor (rich text blog content)
@@ -0,0 +1,68 @@
1
+ # aptpath-models
2
+
3
+ Consolidated Django ORM models for the Aptpath platform, published as a reusable pip package.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install aptpath-models
9
+ ```
10
+
11
+ Or directly from source:
12
+
13
+ ```bash
14
+ pip install git+<repo-url>
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ Add `aptpath_models` to `INSTALLED_APPS` in your Django settings:
20
+
21
+ ```python
22
+ INSTALLED_APPS = [
23
+ ...
24
+ 'aptpath_models',
25
+ ]
26
+ ```
27
+
28
+ Import models directly:
29
+
30
+ ```python
31
+ from aptpath_models.models import Profile, Company, Internship, LMSCourse
32
+ ```
33
+
34
+ ## Package structure
35
+
36
+ ```
37
+ aptpath_models/
38
+ models/
39
+ base.py # Abstract base models
40
+ neo4j_nodes.py # Neo4j StructuredNode classes (neomodel)
41
+ users.py # MongoUser, MongoEmployer, AptPathAdmin, Profile, Permissions
42
+ skills.py # MongoSkill, MongoCategories, Language, MongoAccountType, MongoRole
43
+ user_profile.py # UserEducation, UserExperience, UserCertificate
44
+ company.py # Company, Employment, Invitation, Notification, Activity
45
+ college.py # College and related models
46
+ courses.py # MongoCourse, LMSSystem, CourseTemplates
47
+ jobs.py # Jobs, MongoApplications, JobTemplates, Assessments, DailyStreak
48
+ learning_path.py # LearningPath, LearningPathModule and templates
49
+ assessments_tests.py # AptpathTests, Durationmodel and templates
50
+ nav.py # NavigationItem, NavigationSubheader
51
+ xapi.py # XAPIStatement
52
+ moodle.py # MoodleCourse, MoodleCourseCompletion, MoodleUser
53
+ logs.py # OperationLog (all user types)
54
+ internship.py # Internship, InternshipBatches, Coupon, LeaveRequest, etc.
55
+ labs.py # Lab, SkillBuilder, CodingAssessment, StudentTasks, etc.
56
+ lms_partner.py # LMSCourse, CourseEnrollmentPaymentDetails, UserCourseStatus
57
+ blogs.py # AptpathBlog, Blog and related content models
58
+ employer_ext.py # JobV2, JobApplicationsV2, Roles, InternJobProfile
59
+ payment.py # PaymentDetails
60
+ meetings.py # Recordings
61
+ ```
62
+
63
+ ## Requirements
64
+
65
+ - Django >= 4.2
66
+ - psycopg2-binary (PostgreSQL)
67
+ - neomodel >= 5.0 (Neo4j graph nodes)
68
+ - django-ckeditor (rich text blog content)
@@ -0,0 +1 @@
1
+ default_app_config = 'aptpath_models.apps.AptpathModelsConfig'
@@ -0,0 +1,7 @@
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class AptpathModelsConfig(AppConfig):
5
+ default_auto_field = 'django.db.models.BigAutoField'
6
+ name = 'aptpath_models'
7
+ verbose_name = 'Aptpath Models'
@@ -0,0 +1,320 @@
1
+ """aptpath_models.models — flat export of all consolidated Django models."""
2
+
3
+ from .base import (
4
+ BaseModel,
5
+ BaseModelEmployer,
6
+ BaseModelProfile,
7
+ BaseModelAdmin,
8
+ BaseModelAptpathAdmin,
9
+ GenericModel,
10
+ )
11
+
12
+ from .neo4j_nodes import (
13
+ NeoCollege,
14
+ AccountType,
15
+ Skill,
16
+ Job,
17
+ NeoCourse,
18
+ Learner,
19
+ LearningPathNeo,
20
+ Employer,
21
+ NeoCompany,
22
+ Category,
23
+ Education,
24
+ Certificate,
25
+ Experience,
26
+ Application,
27
+ AptpathTestsNeo,
28
+ ActivityNeo,
29
+ LearningPathModuleNeo,
30
+ )
31
+
32
+ from .users import (
33
+ CustomUserManager,
34
+ MongoUser,
35
+ MongoUserDetail,
36
+ MongoEmployer,
37
+ AptPathAdmin,
38
+ Profile,
39
+ Permissions,
40
+ )
41
+
42
+ from .skills import (
43
+ MongoAccountType,
44
+ Language,
45
+ MongoSkill,
46
+ MongoCategories,
47
+ MongoRole,
48
+ )
49
+
50
+ from .user_profile import (
51
+ UserEducation,
52
+ UserExperience,
53
+ UserCertificate,
54
+ )
55
+
56
+ from .company import (
57
+ Company,
58
+ Employment,
59
+ Invitation,
60
+ Notification,
61
+ Activity,
62
+ EmployerInvitationLog,
63
+ )
64
+
65
+ from .college import (
66
+ College,
67
+ OperationLogCollege,
68
+ CollegeInvitation,
69
+ CollegeDepartment,
70
+ CollegeDegree,
71
+ CollegeAdmin,
72
+ CollegeAdminInvitation,
73
+ AssociatedCollege,
74
+ OtherCollege,
75
+ )
76
+
77
+ from .courses import (
78
+ LMSSystem,
79
+ MongoCourse,
80
+ HiddenCourses,
81
+ UserCourseCompletion,
82
+ CourseTemplates,
83
+ CompanyCourseTemplates,
84
+ )
85
+
86
+ from .jobs import (
87
+ Benefits,
88
+ ExperienceJobForm,
89
+ EmplomentTypes,
90
+ Jobs,
91
+ MongoApplications,
92
+ JobTemplates,
93
+ CompanyJobTemplates,
94
+ Interviewer,
95
+ InterviewDetails,
96
+ Assessments,
97
+ Sessionstreak,
98
+ DailyStreak,
99
+ )
100
+
101
+ from .learning_path import (
102
+ LearningPath,
103
+ LearningPathModule,
104
+ LearningPathTemplates,
105
+ LearningPathModuleTemplates,
106
+ CompanyLearningPathTemplates,
107
+ )
108
+
109
+ from .assessments_tests import (
110
+ Durationmodel,
111
+ AptpathTests,
112
+ AptpathTestsTemplates,
113
+ CompanyTestsTemplates,
114
+ )
115
+
116
+ from .nav import (
117
+ IconChoices,
118
+ NavigationItem,
119
+ NavigationSubheader,
120
+ )
121
+
122
+ from .xapi import XAPIStatement
123
+
124
+ from .moodle import (
125
+ MoodleCourse,
126
+ MoodleCourseCompletion,
127
+ MoodleUser,
128
+ )
129
+
130
+ from .logs import (
131
+ OperationLog,
132
+ OperationLogEmployer,
133
+ OperationLogAptpathAdmin,
134
+ )
135
+
136
+ from .internship import (
137
+ BadgeTypes,
138
+ TechnologyStack,
139
+ InternshipLevels,
140
+ InternCategory,
141
+ InternAvailability,
142
+ InternshipOffers,
143
+ RetakeAssessmentDetails,
144
+ Internship,
145
+ InternshipBatches,
146
+ AdminMentorInvitation,
147
+ InternshipApplications,
148
+ MeetOurMentors,
149
+ CompanyAssociated,
150
+ CollegeAssociated,
151
+ InternshipLikeStatus,
152
+ InternshipRatings,
153
+ Signature,
154
+ InternshipCertificate,
155
+ InternshipCourseLikedStatus,
156
+ InternshipUserCourseCompletion,
157
+ PaymentHistory,
158
+ InternshipCart,
159
+ InternshipSession,
160
+ SessionAttendance,
161
+ InternshipNotes,
162
+ InternshipFeedback,
163
+ TrendingInternships,
164
+ Testimonials,
165
+ InternshipInterested,
166
+ InternSkilledCourses,
167
+ InternAssessment,
168
+ Badges,
169
+ ProfileTokens,
170
+ ProfileTokenTransactions,
171
+ CollegeDiscount,
172
+ WebsiteData,
173
+ OffersAnnouncementsTemplates,
174
+ OffersAnnouncements,
175
+ VoiceOfTrust,
176
+ Coupon,
177
+ CouponUsage,
178
+ AutomatedEmailNotifications,
179
+ LeaveRequest,
180
+ CompanyInternships,
181
+ FinalProjectEvaluation,
182
+ ForgotPasswordInvitation,
183
+ OtherTechStack,
184
+ )
185
+
186
+ from .labs import (
187
+ Lab,
188
+ SkillBuilder,
189
+ CodingAssessment,
190
+ TestCase,
191
+ McqQuestion,
192
+ McqOption,
193
+ WrittenAssessment,
194
+ LabModule,
195
+ LabSubModule,
196
+ LabSubmoduleProgress,
197
+ TaskDetails,
198
+ Attachments,
199
+ StudentTaskBlueprint,
200
+ StudentTasks,
201
+ StudentTasksPerformanceQuestions,
202
+ StudentTasksPerformanceQuestionScore,
203
+ StudentTaskFeedback,
204
+ )
205
+
206
+ from .lms_partner import (
207
+ LearningManagementSystemPartner,
208
+ AiCertsCategory,
209
+ AicertsNewsletter,
210
+ LMSCourse,
211
+ CourseEnrollmentPaymentDetails,
212
+ UserCourseStatus,
213
+ AICertsContactUs,
214
+ LMSCountryPrices,
215
+ LMSStates,
216
+ InternshipSuggestedCourses,
217
+ )
218
+
219
+ from .blogs import (
220
+ AptpathBlogType,
221
+ AptpathBlog,
222
+ AptpathBlogContent,
223
+ BlogType,
224
+ Blog,
225
+ BlogContent,
226
+ )
227
+
228
+ from .employer_ext import (
229
+ InternshipPerformance,
230
+ Roles,
231
+ InternJobProfile,
232
+ JobDepartment,
233
+ JobMode,
234
+ JobV2,
235
+ JobApplicationsV2,
236
+ InternProfileViewByCompany,
237
+ )
238
+
239
+ from .payment import PaymentDetails
240
+
241
+ from .meetings import Recordings
242
+
243
+ __all__ = [
244
+ # base
245
+ 'BaseModel', 'BaseModelEmployer', 'BaseModelProfile', 'BaseModelAdmin',
246
+ 'BaseModelAptpathAdmin', 'GenericModel',
247
+ # neo4j
248
+ 'NeoCollege', 'AccountType', 'Skill', 'Job', 'NeoCourse', 'Learner',
249
+ 'LearningPathNeo', 'Employer', 'NeoCompany', 'Category', 'Education',
250
+ 'Certificate', 'Experience', 'Application', 'AptpathTestsNeo', 'ActivityNeo',
251
+ 'LearningPathModuleNeo',
252
+ # users
253
+ 'CustomUserManager', 'MongoUser', 'MongoUserDetail', 'MongoEmployer',
254
+ 'AptPathAdmin', 'Profile', 'Permissions',
255
+ # skills
256
+ 'MongoAccountType', 'Language', 'MongoSkill', 'MongoCategories', 'MongoRole',
257
+ # user_profile
258
+ 'UserEducation', 'UserExperience', 'UserCertificate',
259
+ # company
260
+ 'Company', 'Employment', 'Invitation', 'Notification', 'Activity',
261
+ 'EmployerInvitationLog',
262
+ # college
263
+ 'College', 'OperationLogCollege', 'CollegeInvitation', 'CollegeDepartment',
264
+ 'CollegeDegree', 'CollegeAdmin', 'CollegeAdminInvitation', 'AssociatedCollege',
265
+ 'OtherCollege',
266
+ # courses
267
+ 'LMSSystem', 'MongoCourse', 'HiddenCourses', 'UserCourseCompletion',
268
+ 'CourseTemplates', 'CompanyCourseTemplates',
269
+ # jobs
270
+ 'Benefits', 'ExperienceJobForm', 'EmplomentTypes', 'Jobs', 'MongoApplications',
271
+ 'JobTemplates', 'CompanyJobTemplates', 'Interviewer', 'InterviewDetails',
272
+ 'Assessments', 'Sessionstreak', 'DailyStreak',
273
+ # learning_path
274
+ 'LearningPath', 'LearningPathModule', 'LearningPathTemplates',
275
+ 'LearningPathModuleTemplates', 'CompanyLearningPathTemplates',
276
+ # assessments_tests
277
+ 'Durationmodel', 'AptpathTests', 'AptpathTestsTemplates', 'CompanyTestsTemplates',
278
+ # nav
279
+ 'IconChoices', 'NavigationItem', 'NavigationSubheader',
280
+ # xapi
281
+ 'XAPIStatement',
282
+ # moodle
283
+ 'MoodleCourse', 'MoodleCourseCompletion', 'MoodleUser',
284
+ # logs
285
+ 'OperationLog', 'OperationLogEmployer', 'OperationLogAptpathAdmin',
286
+ # internship
287
+ 'BadgeTypes', 'TechnologyStack', 'InternshipLevels', 'InternCategory',
288
+ 'InternAvailability', 'InternshipOffers', 'RetakeAssessmentDetails', 'Internship',
289
+ 'InternshipBatches', 'AdminMentorInvitation', 'InternshipApplications',
290
+ 'MeetOurMentors', 'CompanyAssociated', 'CollegeAssociated', 'InternshipLikeStatus',
291
+ 'InternshipRatings', 'Signature', 'InternshipCertificate',
292
+ 'InternshipCourseLikedStatus', 'InternshipUserCourseCompletion', 'PaymentHistory',
293
+ 'InternshipCart', 'InternshipSession', 'SessionAttendance', 'InternshipNotes',
294
+ 'InternshipFeedback', 'TrendingInternships', 'Testimonials', 'InternshipInterested',
295
+ 'InternSkilledCourses', 'InternAssessment', 'Badges', 'ProfileTokens',
296
+ 'ProfileTokenTransactions', 'CollegeDiscount', 'WebsiteData',
297
+ 'OffersAnnouncementsTemplates', 'OffersAnnouncements', 'VoiceOfTrust', 'Coupon',
298
+ 'CouponUsage', 'AutomatedEmailNotifications', 'LeaveRequest', 'CompanyInternships',
299
+ 'FinalProjectEvaluation', 'ForgotPasswordInvitation', 'OtherTechStack',
300
+ # labs
301
+ 'Lab', 'SkillBuilder', 'CodingAssessment', 'TestCase', 'McqQuestion', 'McqOption',
302
+ 'WrittenAssessment', 'LabModule', 'LabSubModule', 'LabSubmoduleProgress',
303
+ 'TaskDetails', 'Attachments', 'StudentTaskBlueprint', 'StudentTasks',
304
+ 'StudentTasksPerformanceQuestions', 'StudentTasksPerformanceQuestionScore',
305
+ 'StudentTaskFeedback',
306
+ # lms_partner
307
+ 'LearningManagementSystemPartner', 'AiCertsCategory', 'AicertsNewsletter',
308
+ 'LMSCourse', 'CourseEnrollmentPaymentDetails', 'UserCourseStatus', 'AICertsContactUs',
309
+ 'LMSCountryPrices', 'LMSStates', 'InternshipSuggestedCourses',
310
+ # blogs
311
+ 'AptpathBlogType', 'AptpathBlog', 'AptpathBlogContent',
312
+ 'BlogType', 'Blog', 'BlogContent',
313
+ # employer_ext
314
+ 'InternshipPerformance', 'Roles', 'InternJobProfile', 'JobDepartment', 'JobMode',
315
+ 'JobV2', 'JobApplicationsV2', 'InternProfileViewByCompany',
316
+ # payment
317
+ 'PaymentDetails',
318
+ # meetings
319
+ 'Recordings',
320
+ ]
@@ -0,0 +1,84 @@
1
+ """Test definitions: AptpathTests, duration models, and templates."""
2
+ from django.db import models
3
+
4
+ from .base import BaseModelEmployer
5
+
6
+
7
+ class Durationmodel(models.Model):
8
+ TEST_CHOICES = (
9
+ ('technical', 'Technical'),
10
+ ('aptitude', 'Aptitude'),
11
+ ('coding', 'Coding'),
12
+ )
13
+
14
+ test_types = models.CharField(max_length=20, choices=TEST_CHOICES, null=True, blank=True)
15
+ no_of_questions = models.IntegerField(null=True, blank=True, default=0)
16
+ duration = models.IntegerField(null=True, blank=True, default=0)
17
+ logo = models.FileField(blank=True, null=True)
18
+
19
+ def __str__(self):
20
+ return str(self.test_types)
21
+
22
+ class Meta:
23
+ db_table = 'duration_test'
24
+
25
+
26
+ class AptpathTests(BaseModelEmployer):
27
+ TEST_CHOICES = (
28
+ ('public', 'Public'),
29
+ ('assessment', 'Assessment'),
30
+ )
31
+
32
+ test_id = models.IntegerField(null=True, blank=True)
33
+ test_types = models.CharField(max_length=20, choices=TEST_CHOICES, default='public')
34
+ name = models.CharField(max_length=100, null=True, blank=True)
35
+ test_duration = models.IntegerField(null=True, blank=True)
36
+ test_description = models.TextField(null=True, blank=True)
37
+ duration = models.ManyToManyField(Durationmodel, blank=True)
38
+
39
+ def __str__(self):
40
+ return f"{self.id} - {self.test_id} - {self.name} - {self.created_by}"
41
+
42
+ class Meta:
43
+ db_table = 'aptpath_tests'
44
+
45
+
46
+ class AptpathTestsTemplates(BaseModelEmployer):
47
+ TEMPLATE_TYPE_CHOICES = (
48
+ ('aptpath', 'aptpath'),
49
+ ('company', 'company'),
50
+ )
51
+ TEST_CHOICES = (
52
+ ('public', 'Public'),
53
+ ('assessment', 'Assessment'),
54
+ )
55
+
56
+ test_id = models.IntegerField(null=True, blank=True)
57
+ test_types = models.CharField(max_length=20, choices=TEST_CHOICES, default='public')
58
+ name = models.CharField(max_length=100, null=True, blank=True)
59
+ test_duration = models.IntegerField(null=True, blank=True)
60
+ test_description = models.TextField(null=True, blank=True)
61
+ duration = models.ManyToManyField(Durationmodel, blank=True)
62
+ template_type = models.CharField(
63
+ max_length=100, null=True, blank=True,
64
+ choices=TEMPLATE_TYPE_CHOICES, default='company')
65
+
66
+ def __str__(self):
67
+ return f"{self.id} - {self.name} - {self.created_by}"
68
+
69
+ class Meta:
70
+ db_table = 'aptpath_tests_templates'
71
+
72
+
73
+ class CompanyTestsTemplates(BaseModelEmployer):
74
+ company = models.ForeignKey(
75
+ 'aptpath_models.Company', on_delete=models.CASCADE, null=True, blank=True)
76
+ test_template = models.ForeignKey(
77
+ AptpathTestsTemplates, on_delete=models.CASCADE, null=True, blank=True)
78
+ is_enabled = models.BooleanField(default=False)
79
+
80
+ def __str__(self):
81
+ return f"{self.company} - {self.test_template} - {self.is_enabled}"
82
+
83
+ class Meta:
84
+ db_table = 'company-test-templates'
@@ -0,0 +1,114 @@
1
+ from django.db import models
2
+
3
+
4
+ class BaseModel(models.Model):
5
+ """Base model for MongoUser-owned records."""
6
+ created_by = models.ForeignKey(
7
+ 'aptpath_models.MongoUser',
8
+ on_delete=models.SET_NULL,
9
+ related_name='created_%(class)s_set',
10
+ blank=True, null=True, default=None,
11
+ )
12
+ created_date = models.DateTimeField(auto_now_add=True)
13
+ modified_date = models.DateTimeField(auto_now=True)
14
+ modified_by = models.ForeignKey(
15
+ 'aptpath_models.MongoUser',
16
+ on_delete=models.SET_NULL,
17
+ related_name='modified_%(class)s_set',
18
+ blank=True, null=True, default=None,
19
+ )
20
+ active = models.BooleanField(default=True)
21
+ neo_id = models.IntegerField(null=True, blank=True)
22
+
23
+ class Meta:
24
+ abstract = True
25
+
26
+
27
+ class BaseModelEmployer(models.Model):
28
+ """Base model for MongoEmployer-owned records."""
29
+ created_by = models.ForeignKey(
30
+ 'aptpath_models.MongoEmployer',
31
+ on_delete=models.SET_NULL,
32
+ null=True,
33
+ related_name='created_%(class)s_set',
34
+ default=None, blank=True,
35
+ )
36
+ created_date = models.DateTimeField(auto_now_add=True)
37
+ modified_date = models.DateTimeField(auto_now=True)
38
+ modified_by = models.ForeignKey(
39
+ 'aptpath_models.MongoEmployer',
40
+ on_delete=models.SET_NULL,
41
+ null=True,
42
+ related_name='modified_%(class)s_set',
43
+ default=None, blank=True,
44
+ )
45
+ active = models.BooleanField(default=True)
46
+ neo_id = models.IntegerField(null=True, blank=True)
47
+
48
+ class Meta:
49
+ abstract = True
50
+
51
+
52
+ class BaseModelProfile(models.Model):
53
+ """Base model for Profile-owned records."""
54
+ created_by = models.ForeignKey(
55
+ 'aptpath_models.Profile',
56
+ on_delete=models.SET_NULL,
57
+ null=True,
58
+ related_name='created_%(class)s_set',
59
+ default=None, blank=True,
60
+ )
61
+ created_date = models.DateTimeField(auto_now_add=True)
62
+ modified_date = models.DateTimeField(auto_now=True)
63
+ deleted_date = models.DateTimeField(blank=True, null=True)
64
+ modified_by = models.ForeignKey(
65
+ 'aptpath_models.Profile',
66
+ on_delete=models.SET_NULL,
67
+ null=True,
68
+ related_name='modified_%(class)s_set',
69
+ default=None, blank=True,
70
+ )
71
+ active = models.BooleanField(default=True)
72
+ neo_id = models.IntegerField(null=True, blank=True)
73
+
74
+ class Meta:
75
+ abstract = True
76
+
77
+
78
+ class BaseModelAdmin(models.Model):
79
+ """Base model for AptPathAdmin-owned records (also covers BaseModelAptpathAdmin)."""
80
+ created_by = models.ForeignKey(
81
+ 'aptpath_models.AptPathAdmin',
82
+ on_delete=models.SET_NULL,
83
+ null=True,
84
+ related_name='created_%(class)s_set',
85
+ default=None, blank=True,
86
+ )
87
+ created_date = models.DateTimeField(auto_now_add=True)
88
+ modified_date = models.DateTimeField(auto_now=True)
89
+ modified_by = models.ForeignKey(
90
+ 'aptpath_models.AptPathAdmin',
91
+ on_delete=models.SET_NULL,
92
+ null=True,
93
+ related_name='modified_%(class)s_set',
94
+ default=None, blank=True,
95
+ )
96
+ active = models.BooleanField(default=True)
97
+ neo_id = models.IntegerField(null=True, blank=True)
98
+
99
+ class Meta:
100
+ abstract = True
101
+
102
+
103
+ # Alias used in internship app
104
+ BaseModelAptpathAdmin = BaseModelAdmin
105
+
106
+
107
+ class GenericModel(models.Model):
108
+ """Timestamp-only abstract base (used by LMS partner models)."""
109
+ created_at = models.DateTimeField(auto_now_add=True)
110
+ updated_at = models.DateTimeField(auto_now=True)
111
+ deleted_at = models.DateTimeField(null=True, blank=True)
112
+
113
+ class Meta:
114
+ abstract = True