class Program(TimeStampedModel): """ Program model. .. no_pii: This model has no PII. """ site = models.ForeignKey(Site, on_delete=models.CASCADE) uuid = models.UUIDField(verbose_name="UUID") title = models.CharField(max_length=255) # We store runs not courses, since not all runs of a course are in a program course_runs = SortedManyToManyField(CourseRun, related_name="programs") authoring_organizations = SortedManyToManyField( Organization, blank=True, related_name="authored_programs") type = models.CharField(max_length=32, blank=False, default="") type_slug = models.CharField(max_length=32, blank=False, default="") total_hours_of_effort = models.PositiveSmallIntegerField(null=True, blank=True) ACTIVE = ProgramStatus.ACTIVE.value RETIRED = ProgramStatus.RETIRED.value DELETED = ProgramStatus.DELETED.value UNPUBLISHED = ProgramStatus.UNPUBLISHED.value # Discovery does give us unpublished programs... status = models.CharField(max_length=24, blank=False, default="active") class Meta: unique_together = (("site", "uuid"), ) def __str__(self): return f"{self.title} ({self.uuid.hex})"
class Migration(migrations.Migration): dependencies = [ ('media', '0007_auto_20190701_1600'), ('ratings', '0001_initial'), ] operations = [ migrations.AddField( model_name='movieratinguser', name='predictions', field=models.ManyToManyField(related_name='ordered_predictions', to='media.Movie'), ), AlterSortedManyToManyField( model_name='movieratinguser', name='predictions', field=SortedManyToManyField('media.Movie', related_name='ordered_predictions'), ), AlterSortedManyToManyField( model_name='movieratinguser', name='movieratingids', field=SortedManyToManyField('media.Movie'), ), AlterSortedManyToManyField( model_name='bookratinguser', name='bookratingids', field=SortedManyToManyField('media.Book'), ), ]
class Program(TimeStampedModel): """ Program model. .. no_pii: This model has no PII. """ site = models.ForeignKey(Site, on_delete=models.CASCADE) uuid = models.UUIDField(verbose_name='UUID') title = models.CharField(max_length=255) # We store runs not courses, since not all runs of a course are in a program course_runs = SortedManyToManyField(CourseRun, related_name='programs') authoring_organizations = SortedManyToManyField(Organization, blank=True, related_name='authored_programs') type = models.CharField(max_length=32, blank=False, default='') type_slug = models.CharField(max_length=32, blank=False, default='') ACTIVE = 'active' RETIRED = 'retired' DELETED = 'deleted' UNPUBLISHED = 'unpublished' # Discovery does give us unpublished programs... status = models.CharField(max_length=24, blank=False, default='active') class Meta: unique_together = ( ('site', 'uuid'), ) def __str__(self): return self.title
class RelatedServicesPlugin(CMSPlugin): # NOTE: This one does NOT subclass NewsBlogCMSPlugin. This is because this # plugin can really only be placed on the article detail view in an apphook. cmsplugin_ptr = models.OneToOneField( CMSPlugin, on_delete=models.CASCADE, related_name='+', parent_link=True) title = models.CharField(max_length=255, blank=True, verbose_name=_('Title')) icon = Icon(blank=False, default='') image = FilerImageField(on_delete=models.SET_NULL, null=True, blank=True, related_name='+') count = models.PositiveSmallIntegerField(verbose_name=_('Number services')) layout = models.CharField(max_length=30, verbose_name=_('layout')) background_color = RGBColorField(verbose_name=_('Background Color'), blank=True, null=True) full_screen = models.BooleanField(_('Show full screen'), default=False) related_services = SortedManyToManyField('js_services.Service', verbose_name=_('related services'), blank=True, symmetrical=False) related_sections = SortedManyToManyField(ServicesConfig, verbose_name=_('related sections'), blank=True, symmetrical=False) related_people = SortedManyToManyField(Person, verbose_name=_('key people'), blank=True, symmetrical=False) related_categories = SortedManyToManyField('aldryn_categories.Category', verbose_name=_('related categories'), blank=True, symmetrical=False) def copy_relations(self, oldinstance): self.related_services.set(oldinstance.related_services.all()) self.related_sections.set(oldinstance.related_sections.all()) self.related_people.set(oldinstance.related_people.all()) self.related_categories.set(oldinstance.related_categories.all()) if IS_THERE_COMPANIES: self.related_companies.set(oldinstance.related_companies.all()) def __str__(self): return str(self.pk)
class GeneralProduct(models.Model): class Meta: verbose_name_plural = "Выбор продуктов для главной" verbose_name = "Выбор продуктов для главной" child = SortedManyToManyField("products.Product", blank=True, verbose_name="Детям", related_name="gen_child") adults = SortedManyToManyField("products.Product", blank=True, verbose_name="Взрослым", related_name="gen_adult") avitaminoz = SortedManyToManyField("products.Product", blank=True, verbose_name="Авитаминоз", related_name="gen_av") hurt = SortedManyToManyField("products.Product", blank=True, verbose_name="Сердце", related_name="gen_hurt") beaty = SortedManyToManyField("products.Product", blank=True, verbose_name="Красота", related_name="gen_beaty") def __str__(self): return "Выбор" def clean(self): if self._meta.model.objects.count() == 1 and not self.pk: raise ValidationError( "Может существовать только в одном экземпляре")
class RelatedPeoplePlugin(CMSPlugin): # NOTE: This one does NOT subclass NewsBlogCMSPlugin. This is because this # plugin can really only be placed on the article detail view in an apphook. cmsplugin_ptr = models.OneToOneField( CMSPlugin, on_delete=models.CASCADE, related_name='+', parent_link=True) title = models.CharField(max_length=255, blank=True, verbose_name=_('Title')) icon = Icon(blank=False, default='') image = FilerImageField(on_delete=models.SET_NULL, null=True, blank=True, related_name="main_image") number_of_people = models.PositiveSmallIntegerField(verbose_name=_('Number of people')) layout = models.CharField(max_length=30, verbose_name=_('layout')) related_people = SortedManyToManyField(Person, verbose_name=_('key people'), blank=True, symmetrical=False) related_groups = SortedManyToManyField(Group, verbose_name=_('related groups'), blank=True, symmetrical=False) related_locations = SortedManyToManyField('js_locations.Location', verbose_name=_('related locations'), blank=True, symmetrical=False) related_categories = SortedManyToManyField('aldryn_categories.Category', verbose_name=_('related categories'), blank=True, symmetrical=False) related_services = SortedManyToManyField('js_services.Service', verbose_name=_('related services'), blank=True, symmetrical=False) more_button_is_shown = models.BooleanField(blank=True, default=False, verbose_name=_('Show “See More Button”')) more_button_text = models.CharField(max_length=255, blank=True, verbose_name=_('See More Button Text')) more_button_link = models.CharField(max_length=255, blank=True, verbose_name=_('See More Button Link')) def copy_relations(self, oldinstance): self.related_people.set(oldinstance.related_people.all()) self.related_groups.set(oldinstance.related_groups.all()) self.related_locations.set(oldinstance.related_locations.all()) self.related_services.set(oldinstance.related_services.all()) self.related_categories.set(oldinstance.related_categories.all()) if IS_THERE_COMPANIES: self.related_companies.set(oldinstance.related_companies.all()) def __str__(self): return text_type(self.pk)
class Collection(BaseModel): display_name = models.CharField(max_length=255, blank=True, null=True, help_text="Public name for the collection") internal_name = models.CharField(max_length=255, blank=True, null=True, help_text="Internal name for the collection") created_by = models.CharField(max_length=255, blank=True, null=True) published = models.BooleanField(help_text="Whether or not this collection is currently active.") created_at = models.DateTimeField(editable=False) updated_at = models.DateTimeField() movies = SortedManyToManyField('Movie', sort_value_field_name='order', blank=True, through='CollectionMovie', related_name='collections') shows = SortedManyToManyField('Show', sort_value_field_name='order', related_name='collections', through='CollectionShow', blank=True) episodes = SortedManyToManyField('Episode', sort_value_field_name='order', related_name='collections', through='CollectionEpisode', blank=True) collections = SortedManyToManyField('Collection', sort_value_field_name='order', related_name='parents', through='CollectionChildren', blank=True) def __str__(self): return 'Collection: %s created_by: %s' % (self.display_name, self.created_by) class Meta: verbose_name = 'Collection' verbose_name_plural = 'Collections' managed = False db_table = 'collections'
class NewsBlogJSRelatedPlugin(PluginEditModeMixin, AdjustableCacheModelMixin, CMSPlugin): # NOTE: This one does NOT subclass NewsBlogCMSPlugin. This is because this # plugin can really only be placed on the article detail view in an apphook. cmsplugin_ptr = models.OneToOneField(CMSPlugin, related_name='+', parent_link=True) title = models.CharField(max_length=255, blank=True, verbose_name=_('Title')) icon = Icon(blank=False, default='fa-') image = FilerImageField(null=True, blank=True, related_name="title_image") number_of_articles = models.PositiveSmallIntegerField( verbose_name=_('Number of articles'), validators=[django.core.validators.MaxValueValidator(120)]) layout = models.CharField(max_length=30, verbose_name=_('layout')) featured = models.BooleanField(blank=True, default=False) exclude_current_article = models.BooleanField(blank=True, default=False) related_types = SortedManyToManyField(NewsBlogConfig, verbose_name=_('related sections'), blank=True, symmetrical=False) related_categories = SortedManyToManyField( Category, verbose_name=_('related categories'), blank=True, symmetrical=False) related_services = SortedManyToManyField( 'js_services.Service', verbose_name=_('related services'), blank=True, symmetrical=False) related_authors = SortedManyToManyField(Person, verbose_name=_('related authors'), blank=True, symmetrical=False) def copy_relations(self, oldinstance): self.related_types = oldinstance.related_types.all() self.related_categories = oldinstance.related_categories.all() self.related_services = oldinstance.related_services.all() self.related_authors = oldinstance.related_authors.all() # def get_articles(self, article, request): # """ # Returns a queryset of articles that are related to the given article. # """ # languages = get_valid_languages_from_request( # article.app_config.namespace, request) # if self.language not in languages: # return Article.objects.none() # qs = article.related.translated(*languages) # if not self.get_edit_mode(request): # qs = qs.published() # return qs def __str__(self): return ugettext('Related articles')
class Post(models.Model): id = models.BigAutoField(primary_key=True) user = models.ForeignKey(User, on_delete=models.CASCADE) message = models.TextField() gallery = SortedManyToManyField(Photo, blank=True) quotation = SortedManyToManyField(Bible, blank=True) likes = SortedManyToManyField(Like, blank=True) comments = SortedManyToManyField(CommentBox, blank=True) created = models.DateTimeField(auto_now=False, auto_now_add=True) updated = models.DateTimeField(auto_now=True)
class SearchDefaultResultsConfiguration(models.Model): index_name = models.CharField(max_length=32, unique=True) programs = SortedManyToManyField( Program, blank=True, null=True, limit_choices_to={'status': ProgramStatus.Active}) courses = SortedManyToManyField(Course, blank=True, null=True, limit_choices_to={'draft': 0})
class Purchasable(UserOwnable, FranchiseOwnable): name = models.CharField(max_length=255) base_price = models.DecimalField(max_digits=19, decimal_places=10) image = models.ImageField(upload_to="images/thumbnail/", null=True) purchasable_options = SortedManyToManyField(PurchasableOption, blank=True) badges = SortedManyToManyField(Badge, blank=True) def __str__(self): return self.name
class Gallery(models.Model): name = models.CharField(max_length=50) photos = SortedManyToManyField(Photo) photos2 = SortedManyToManyField(Photo, related_name='gallery2+') class Meta: verbose_name = _('Photo') verbose_name_plural = _('Photos') def __str__(self): return self.name
class Session(models.Model): experiment = models.ForeignKey(Experiment) display_name = models.CharField(max_length=200) created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) started_at = models.DateTimeField(blank=True) ended_at = models.DateTimeField(blank=True) participants = SortedManyToManyField(Participant) # this is the largest possible meaning space meaning_space = SortedManyToManyField(MeaningSpace) def __unicode__(self): return "{}({})".format(self.__class__.__name__, self.display_name)
class Session(CMSPlugin): start_time = models.CharField( max_length=255, verbose_name=_('Start Time'), ) end_time = models.CharField( max_length=255, verbose_name=_('End Time'), ) title = models.CharField( max_length=255, verbose_name=_('Title'), ) session_type = models.CharField(max_length=255, verbose_name=_('Type'), blank=True) description = HTMLField(verbose_name=_('Description'), default='', blank=True) speakers_list_title = models.CharField( max_length=255, blank=True, verbose_name=_('Speakers List Title Type 1')) speakers_list = SortedManyToManyField( 'js_events.Speaker', verbose_name=_('Speakers Type 1'), blank=True, related_name='sessions', ) speakers_list_title2 = models.CharField( max_length=255, blank=True, verbose_name=_('Speakers List Title Type 2')) speakers_list2 = SortedManyToManyField( 'js_events.Speaker', verbose_name=_('Speakers Type 2'), blank=True, related_name='sessions2', ) backgrond_color = RGBColorField( verbose_name=_('Backgrond color'), blank=True, null=True, ) def __str__(self): return self.title or str(self.pk) def copy_relations(self, oldinstance): self.speakers_list = oldinstance.speakers_list.all() self.speakers_list2 = oldinstance.speakers_list2.all()
class Product(models.Model): user = models.ForeignKey(User) name = models.CharField(max_length=255) subtitle = models.CharField(max_length=255, null=True, blank=True) thumbnail_url = models.URLField() purchase_url = models.URLField(null=True, blank=True) spec1_name = models.CharField(max_length=45) spec2_name = models.CharField(max_length=45, null=True, blank=True) spec1_options = models.CharField(max_length=255) spec2_options = models.CharField(max_length=255, null=True, blank=True) use_spec2 = models.BooleanField(default=False) spec_price = models.TextField(null=True, blank=True) body = models.TextField(null=True, blank=True) is_published = models.BooleanField(default=False) is_deleted = models.BooleanField(default=False) is_featured = models.BooleanField(default=False) view_count = models.IntegerField(default=0) low_price = models.PositiveIntegerField(default=100, db_index=True) high_price = models.PositiveIntegerField(default=100) create_time = models.DateTimeField(default=timezone.now) update_time = models.DateTimeField(db_index=True, auto_now=True) delete_time = models.DateTimeField(null=True) publish_time = models.DateTimeField(null=True) create_user = models.ForeignKey(User, related_name='create_user') update_user = models.ForeignKey(User, related_name='update_user') delete_user = models.ForeignKey(User, related_name='delete_user', null=True) publish_user = models.ForeignKey(User, related_name='publish_user', null=True) product_category = models.ForeignKey(ProductCategory) related = SortedManyToManyField('self', blank=True, symmetrical=False) images = SortedManyToManyField(Image, blank=True, symmetrical=False) def split_spec1_options(self): return self.spec1_options.split(',') def split_spec2_options(self): return self.spec2_options.split(',') def parse_spec_price(self): return json.loads(self.spec_price) def join_image_ids(self): return ','.join(map(str, self.images.values_list('id', flat=True))) def __unicode__(self): return u'%s' % (self.name)
class Post(models.Model): class Meta: ordering = ['-id'] verbose_name = "Статья" verbose_name_plural = "Статьи" image = models.ImageField(upload_to=get_image_path, verbose_name="Картинка", help_text="Выберете картинку") image_thumb = models.ImageField( upload_to=get_image_path, verbose_name="Миниатюра для важно знать", help_text="Выберете картинку", ) date = models.DateField(default=timezone.now) products = SortedManyToManyField(Product, verbose_name="Продукты") posts = SortedManyToManyField(PostLink, verbose_name="Прикреплённые статьи") def image_tag(self): width = self.image.width if self.image.width <= 200 else 200 print(self.image.path) return mark_safe(f'<img src={self.image.url} width="{width}px">') image_tag.short_description = 'Предпросмотр' def name(self): return self def __str__(self): return self.postbody_set.filter(language='ru')[0].name def save(self, *args, **kwargs): if self.pk is None: img = self.image img_thumb = self.image_thumb self.image = None self.image_thumb = None super(Post, self).save(*args, **kwargs) self.image = img self.image_thumb = img_thumb link = PostLink() link._post = self link.save() super(Post, self).save(*args, **kwargs)
class Trip(models.Model): trip_name = models.CharField(max_length = 1000) pois = SortedManyToManyField(POI) #waypoint_id = models.IntegerField(default=0) def __unicode__(self): return self.trip_name
class Program(TimeStampedModel): site = models.ForeignKey(Site, on_delete=models.CASCADE) uuid = models.UUIDField(verbose_name='UUID') title = models.CharField(max_length=255) # We store runs not courses, since not all runs of a course are in a program course_runs = SortedManyToManyField(CourseRun, related_name='programs') authoring_organizations = SortedManyToManyField(Organization, blank=True, related_name='authored_programs') type = models.CharField(max_length=32, blank=False, default='') class Meta: unique_together = ( ('site', 'uuid'), ) def __str__(self): return self.title
class RelatedSpeakersPlugin(CMSPlugin): # NOTE: This one does NOT subclass NewsBlogCMSPlugin. This is because this # plugin can really only be placed on the article detail view in an apphook. cmsplugin_ptr = models.OneToOneField(CMSPlugin, on_delete=models.CASCADE, related_name='+', parent_link=True) title = models.CharField(max_length=255, blank=True, verbose_name=_('Title')) icon = Icon(blank=False, default='') image = FilerImageField(on_delete=models.SET_NULL, null=True, blank=True, related_name="related_speakers") number_of_people = models.PositiveSmallIntegerField( verbose_name=_('Number of people')) layout = models.CharField(max_length=30, verbose_name=_('layout'), blank=True, default='', choices=[]) speakers = SortedManyToManyField(Speaker, verbose_name=_('speakers'), blank=True, symmetrical=False) def copy_relations(self, oldinstance): self.speakers.set(oldinstance.speakers.all()) def __str__(self): return get_template_title(RELATED_SPEAKERS_LAYOUTS, self.layout)
class Ressource(models.Model): titre = models.CharField(db_index=True, max_length=767) slug = models.SlugField(unique=True, max_length=255, blank=True) texte = models.TextField(db_index=True, blank=True) lien_texte = models.CharField(max_length=767, blank=True) annee = models.IntegerField(db_index=True, choices=ressource_year_choices) mois = models.SlugField(max_length=30, blank=True, choices=ressource_mois_choices) lieu = models.CharField(db_index=True, max_length=300, blank=True) page_deb = models.IntegerField(null=True, blank=True, verbose_name='Page de début') page_fin = models.IntegerField(null=True, blank=True, verbose_name='Page de fin') date_debut = models.DateField(null=True, blank=True, verbose_name='Date de début') date_fin = models.DateField(null=True, blank=True, verbose_name='Date de fin') editeur = models.CharField(db_index=True, max_length=450, blank=True) formation = models.CharField(db_index=True, max_length=300, blank=True) universite = models.CharField(db_index=True, max_length=300, blank=True, verbose_name='Université') discipline = models.CharField(db_index=True, max_length=300, blank=True) type_production = models.CharField(db_index=True, max_length=767, blank=True) type_rapport = models.CharField(db_index=True, max_length=767, blank=True) revue = models.ForeignKey(Revue, verbose_name= 'Nom de la revue attribuée', null=True, blank=True) tags = models.ManyToManyField(Tag) #auteurs = models.ManyToManyField(Auteur) auteurs = SortedManyToManyField(Auteur) categories = models.ManyToManyField(Categorie, verbose_name=u'Catégorie', null=True, blank=True) subcats = models.ManyToManyField(SousCategorie, verbose_name=u'Sous-Catégorie', null=True, blank=True) def __unicode__(self): return self.titre class Meta: ordering = ['annee', 'titre']
class D6(models.Model): customer = models.CharField(max_length=100) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='d6_user') day1 = SortedManyToManyField(Activities, related_name='d6_day1_activities') day2 = models.ManyToManyField(Activities, blank=True, related_name='d6_day2_activities') day3 = models.ManyToManyField(Activities, blank=True, related_name='d6_day3_activities') day4 = models.ManyToManyField(Activities, blank=True, related_name='d6_day4_activities') day5 = models.ManyToManyField(Activities, blank=True, related_name='d6_day5_activities') day6 = models.ManyToManyField(Activities, blank=True, related_name='d6_day6_activities') has_closed = models.BooleanField(blank=True, default=False) price = models.PositiveIntegerField(blank=True, default=0) def __str__(self): return f"{self.user}"
class TextAnnotation(models.Model): kind = models.CharField( max_length=255, default=hookset.TEXT_ANNOTATION_DEFAULT_KIND, choices=hookset.TEXT_ANNOTATION_KIND_CHOICES, ) data = JSONField(default=dict, blank=True) idx = models.IntegerField(help_text="0-based index") text_parts = SortedManyToManyField( "scaife_viewer_atlas.Node", related_name="text_annotations" ) urn = models.CharField(max_length=255, blank=True, null=True) def resolve_references(self): if "references" not in self.data: print(f'No references found [urn="{self.urn}"]') return desired_urns = set(self.data["references"]) reference_objs = list(Node.objects.filter(urn__in=desired_urns)) resolved_urns = set([r.urn for r in reference_objs]) delta_urns = desired_urns.symmetric_difference(resolved_urns) if delta_urns: print( f'Could not resolve all references, probably due to bad data in the CEX file [urn="{self.urn}" unresolved_urns="{",".join(delta_urns)}"]' ) self.text_parts.set(reference_objs)
class AchievementTaskSet(models.Model): """ One Achievement is related to set of tasks. """ slug = models.SlugField( primary_key=True, help_text= 'Must be unique among all achievement task sets, serves as part of URL.<br />' 'Must only contain characters "a-zA-Z0-9_-".') name = models.CharField(max_length=128) achievement = models.ForeignKey(Achievement, on_delete=models.CASCADE) tasks = SortedManyToManyField(Task) @receiver(post_save, sender=Review, weak=False) def handler(sender, **kwargs): review = kwargs['instance'] user = review.submit.user for achievementTaskSet in AchievementTaskSet.objects.all(): task_list = achievementTaskSet.tasks.all() solved_all = True for task in task_list: if not Review.objects.filter( submit__user=user, submit__receiver__in=task.submit_receivers.all(), score=100).exists(): solved_all = False if solved_all: achievement = Achievement.objects.get( slug=achievementTaskSet.slug) achievement.award_to(user)
class DoItYourselfShelf(models.Model): books = SortedManyToManyField( Book, sort_value_field_name='diy_sort_number', related_name='diy_shelves', base_class=BaseBookThrough )
class Pathway(TimeStampedModel): """ Connects an organization and programs to a Pathway. Pathways can be credit pathways that represent channels where learners can send their records for credit, or professional pathways. .. no_pii: This model has no learner PII. The email address used here is the email address associated with the pathway itself (such as '*****@*****.**'), not with a learner. """ pathway_type = models.CharField( max_length=32, choices=[(tag.value, tag.value) for tag in PathwayType], default=PathwayType.CREDIT.value, ) site = models.ForeignKey(Site, on_delete=models.CASCADE) uuid = models.UUIDField(verbose_name='UUID') name = models.CharField(max_length=255) org_name = models.CharField(max_length=255) email = models.EmailField() programs = SortedManyToManyField(Program, related_name='pathways') class Meta: unique_together = ( ('site', 'uuid'), ) def __str__(self): return self.name
class AchievementTaskSet(models.Model): """ One Achievement is related to set of tasks. """ slug = models.SlugField( primary_key=True, help_text= "Must be unique among all achievement task sets, serves as part of URL.<br />" 'Must only contain characters "a-zA-Z0-9_-".', ) name = models.CharField(max_length=128) achievement = models.ForeignKey(Achievement, on_delete=models.CASCADE) tasks = SortedManyToManyField(Task) @receiver(post_save, sender=Review, weak=False) def handler(sender, **kwargs): review = kwargs["instance"] user = review.submit.user task = review.submit.receiver.task for achievementTaskSet in AchievementTaskSet.objects.filter( tasks__in=[task]): task_list = achievementTaskSet.tasks.all() if (Review.objects.order_by( "submit", "-time").distinct("submit").filter( score=100, submit__user=user, submit__receiver__task__in=task_list, ).values("submit__receiver__task").distinct().count() == len(task_list)): achievementTaskSet.achievement.users.add(user)
class Persona(models.Model): opcionesSexo = (('H', 'Hombre'), ('M', 'Mujer')) nombre = models.CharField('Nombre', max_length=50) apellido1 = models.CharField('Primer apellido', max_length=50) apellido2 = models.CharField('Segudo apellido', max_length=50, null=True, blank=True) sexo = models.CharField('Sexo', max_length=5, choices=opcionesSexo) identificacion = models.CharField('Identificacion', max_length=50, unique=True) fecha = models.DateField('Fecha nacimiento') celular = models.CharField('Celular', max_length=30, null=True, blank=True) telefono = models.CharField('Telefono', max_length=30, null=True, blank=True) correo = models.EmailField('Correo', unique=True) usuario = models.OneToOneField(User, on_delete=models.CASCADE) fotos = SortedManyToManyField('photologue.Photo', related_name='fotos', blank=True) #usuario = models.CharField('Usuario', max_length=50) #clave = models.CharField('Clave', max_length=50) #confirmacion = models.CharField('Confirmar clave', max_length=50) def nombreCompleto(self): return self.nombre + ' ' + self.apellido1 + ' ' + self.apellido2
class Config(OrgMixin, TemplatesVpnMixin, AbstractConfig): """ Concrete Config model """ device = models.OneToOneField('config.Device', on_delete=models.CASCADE) templates = SortedManyToManyField( 'config.Template', related_name='config_relations', verbose_name=_('templates'), base_class=TemplatesThrough, blank=True, help_text=_('configuration templates, applied from ' 'first to last')) vpn = models.ManyToManyField('config.Vpn', through='config.VpnClient', related_name='vpn_relations', blank=True) class Meta(AbstractConfig.Meta): abstract = False def clean(self): if not hasattr(self, 'organization') and self._has_device(): self.organization = self.device.organization super(Config, self).clean()
class JobListPlugin(BaseJobsPlugin): """ Store job list for JobListPlugin. """ jobopenings = SortedManyToManyField( JobOpening, blank=True, verbose_name=_('job openings'), help_text=_("Choose specific Job Openings to show or leave empty to " "show latest. Note that Job Openings from different " "app configs will not appear.")) def get_job_openings(self, namespace): """ Return the selected JobOpening for JobListPlugin. If no JobOpening are selected, return all active events for namespace and language, sorted by title. """ if self.jobopenings.exists(): return self.jobopenings.namespace(namespace).active() return (JobOpening.objects.namespace(namespace).language( self.language).active_translations(self.language).active()) def __str__(self): return force_text(self.pk) def copy_relations(self, oldinstance): self.app_config = oldinstance.app_config self.jobopenings = oldinstance.jobopenings.all()
class TextAlignment(models.Model): """ Tracks an alignment between one or more texts. """ label = models.CharField(blank=True, null=True, max_length=255) description = models.TextField(blank=True, null=True) # TODO: Formalize CITE data model for alignments urn = models.CharField(max_length=255, unique=True) """ metadata contains author / attribution information """ metadata = JSONField(default=dict, blank=True) """ versions being sorted maps onto the "items" within a particular record """ versions = SortedManyToManyField( "scaife_viewer_atlas.Node", related_name="text_alignments" ) def __str__(self): return self.label